手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

C#获取目标窗体句柄

时间:2024-10-25 05:49:48

1、打开VS,创建如图一个窗体,再加入一个定时器控件Timer

C#获取目标窗体句柄

2、引入:using System.Runtime.InteropServices;命名空间然后全部代码如下。

3、[DllImport("user32.dll")] public static extern int GetCursorPos(ref PointAPI lpPoint); //获取鼠标坐标,该坐标是光标所在的屏幕坐标位置 [DllImport("user32.dll")] public static extern int WindowFromPoint(int xPoint,int yPoint); //指定坐标处窗体句柄 [DllImport("user32.dll")] public static extern int GetWindowText(int hwnd,StringBuilder lpString,int nMaxCount);//获取窗体标题名称 [DllImport("user32.dll")] public static extern int GetClassName(int hwnd,StringBuilder lpstring,int nMaxCount); //获取窗体类名称 [StructLayout(LayoutKind.Sequential)] public struct PointAPI { public int x; public int y; } bool bt = false; private void button1_Click(object sender, EventArgs e) { if (!bt) { this.button1.Text = "关闭"; timer1.Enabled = true; timer1.Start(); bt = true; } else { this.button1.Text = "开启"; timer1.Enabled = false; timer1.Stop(); bt = false; } } PointAPI pi = new PointAPI(); public void PointA() { GetCursorPos(ref pi); int hwnd = WindowFromPoint(pi.x, pi.y); StringBuilder name = new StringBuilder(255); StringBuilder className = new StringBuilder(255); GetWindowText(hwnd, name, 255); GetClassName(hwnd,className,255); textBox1.Text = name.ToString(); textBox2.Text = className.ToString(); } private void Form1_Load(object sender, EventArgs e) { timer1.Enabled = false; timer1.Stop(); } private void timer1_Tick(object sender, EventArgs e) { PointA(); } }

4、运行后,光标所在位置即可显示当前所在窗体的句柄名称,句柄类名称。有了句柄就可以做很多事情!

© 手抄报圈