1、打开VS,创建如图一个窗体,再加入一个定时器控件Timer
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、运行后,光标所在位置即可显示当前所在窗体的句柄名称,句柄类名称。有了句柄就可以做很多事情!