C#实现设置系统级热键功能
在Win32、MFC中实现系统热键是很简单的事件,但是用C#实现就要花点时间了,下面看下C#如何设置系统级热键的。 第一步,先在类的级别中申明两个API函数, C# Code [http://www.xueit.com] ///
在Win32、MFC中实现系统热键是很简单的事件,但是用C#实现就要花点时间了,下面看下C#如何设置系统级热键的。
第一步,先在类的级别中申明两个API函数,
C# Code [http://www.xueit.com]
///注册热键 [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, Keys vk); ///卸载热键 [DllImport("user32.dll")] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); 注意引入名字空间 System.Runtime.InteropServices;
上面两个函数参数的解释:
RegisterHotKey 函数中,
hWnd为本程序窗口的句柄,在C#的窗口中直接用Handle属性就可以引用窗口句柄
id为热键的标示符,是我们自己定义的,因为一个程序中可以定义多个热键,所以要用这个字段来区别,具体用法见下
fsModifiers为激活热键时,是否和系统键组合使用,none:0 Alt:1 Ctrl:2 Shift:4,并且还可以用或运算来组合使用
vk就是要定义的热键,C#中按键都被包含在Keys枚举中
UnregisterHotKey 函数中,
hWnd和RegisterHotKey 函数中是一样的,id为要卸载的热键标示
第二步,在窗口的初始化中注册热键,例如 RegisterHotKey(Handle, 100, 0, Keys.F9);
将些热键识别为100,0表示不使用系统键,Keys.F9表示此热键为F9,若要同时按Shift+Ctrl+F9,则第三个参数应该为 2|4 其实对二进制运算熟悉的朋友,可以立刻算出 2|4=6
第三步,可以响应热键了:
重写窗体的WndProc函数,具体代码为
C# Code [http://www.xueit.com]
protected override void WndProc(ref Message m) { //这个if的条件中固定的 if (m.Msg == 0x312) { //这个if就在于判断是哪个热键,100对应上面RegisterHotKey函数中的第二个参数 if (m.WParam.ToInt32() == 100) { //这里就是响应的函数 DoSomething(); } } base.WndProc(ref m); }
WndProc()函数的功能就是处理Windows消息,在其它地方还将看到这个函数的妙用!
第四步,在程序结束的时候调用UnregisterHotKey(Handle,100)卸载此热键!
精彩图集
精彩文章
热门标签
长整除
网页图标
颜色选择器
tomcat301
纵坐标值
页里面
SGID
udp服务端程
CSS,技巧补遗
判断图片
大全
side_effect
图片等比缩放
Oracle客户端
sql分类汇总
排序字段
wince程序
文件收缩
access数据库
固定右栏宽度
json字符串
Schedul
calloc
usb
乘法计算
File域
SQLServer200
cin.get
执行顺序问
表达式查
结束时间
全部替换
24天
No
共享表空间
Dialog
Sublime
不同顺序排
数据库函数
导出插入
环境检测
二进制流
竞争
网络探测器
手机型号
重启
输出函数
photoshop
逗号分隔
退出线程
销售冠军
途径
语言包
两个栈
7.5
回车换行
重新启动
5款
jarsigner
jquery动态加载js
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

