C#中利用Handle的操作
来源:互联网 发布:nginx 多域名重定向 编辑:程序博客网 时间:2024/05/16 09:27
C#中利用Handle的操作
1.我新建了个窗体,窗体中放个Label,这个Label用来显示窗体的句柄。
2.拖个Timer控件到窗体中,设置属性Enable=true
3.代码里添加名字空间引用
using System.Runtime.InteropServices;
加入获得Handle的API
[DllImport("user32.dll")]
internal static extern IntPtr WindowFromPoint(Point Point);
加入获得鼠标焦点的API
[DllImport("user32.dll")]
internal static extern bool GetCursorPos(out Point lpPoint);
4.写Timer的Tick事件,获取Handle
private void timer1_Tick(object sender, EventArgs e)
{
Point p;
if (GetCursorPos(out p))
{
IntPtr hwndCurWindow = WindowFromPoint(p);
lblhandle.Text = hwndCurWindow.ToString();
}
}
5.执行它,晃动你的鼠标,当你的鼠标在各个窗体间切换的时候,label一直在变,这个就是获得的句柄。
6.有了句柄又怎么样呢,我也不知道获得了句柄想干嘛。我的机器上有两个翻译软件,金山词霸和有道。有一个不能用的话也没有关系吧。我获得了有道窗体的句柄“B09FC”,我把它转成16进制的了,这样:hwndCurWindow.ToString("X"); 于是我判断当句柄等于“B09FC”时,我就关掉窗体,我还要加入个关窗体的API:
[DllImport("user32.dll")]
public static extern bool CloseWindow(IntPtr hWnd);
然后我判断
if (hwndCurWindow.ToString("X") == "B09FC")
{
CloseWindow(hwndCurWindow);
}
执行它,这时当我打开有道词典的时候,我的鼠标一放上去,窗体就关掉。
我把它改成了一个Windows服务,让它在后台执行,好了,我再也不能使用有道了。
这是winform的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace HandleShow
{
public partial class Form1 : Form
{
[DllImport("user32.dll")]
internal static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll")]
internal static extern bool GetCursorPos(out Point lpPoint);
[DllImport("user32.dll")]
public static extern bool CloseWindow(IntPtr hWnd);
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
Point p;
if (GetCursorPos(out p))
{
IntPtr hwndCurWindow = WindowFromPoint(p);
lblhandle.Text = hwndCurWindow.ToString();
if (hwndCurWindow.ToString("") == "332106")
{
CloseWindow(hwndCurWindow);
}
}
}
}
}
闲来无事,复习下API。网上搜来的,我只能说太强大了
http://d.download.csdn.net/down/948047/yuz_yuz
- C#中利用Handle的操作
- Unity3d中利用C#操作SQLite数据库
- Android中Handle的作用
- android中handle的用法
- C#中操作Word(4)—— 利用Range对象设置文本的格式
- 利用C#操作配置文件
- 利用C#操作注册表
- C#中利用委托实现多线程跨线程操作
- 在C#中利用wmi操作DNS服务器
- C#中利用反射操作私有字段与私有方法
- 在C#中利用SQL语句与数据库进行操作
- C#中利用委托实现多线程跨线程操作
- C#中利用委托实现多线程跨线程操作
- 利用NEST2.0 在C#中操作Elasticsearch
- MSDN中关于 handle的解释
- Android中对Handle机制的理解
- android中Handle类的用法
- android中Handle类的用法
- 关于 Java 中 finally 语句块的深度辨析
- linux常用命令
- 解决表单GET提交后台数据乱码问题
- Cracking the coding interview(中文版)
- jQuery/Zepto Intimidatetime
- C#中利用Handle的操作
- LeetCode 119 Pascal's Triangle II
- css控制标题长度超出部分显示省略号
- JBPM 中Signavio web的安装过程
- linux常用目录介绍
- 详解MapReduce实现数据去重与倒排索引应用场景案例
- android样式和主题
- 基于浏览器的html在线编辑器 热点推荐
- sql语句使用记录