C#中利用Handle的操作
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。网上搜来的,我只能说太强大了
C#.net. WPF.core 技术交流群 群号205082182,欢迎加入,也可以直接点击左侧和下方的"加入QQ群",直接加入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!