C#实现设置系统级热键功能
在Win32、MFC中实现系统热键是很简单的事件,但是用C#实现就要花点时间了,下面看下C#如何设置系统级热键的。 第一步,先在类的级别中申明两个API函数, C# Code [http://www.xueit.com] ///
在Win32、MFC中实现系统热键是很简单的事件,但是用C#实现就要花点时间了,下面看下C#如何设置系统级热键的。
第一步,先在类的级别中申明两个API函数,

///注册热键 [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函数,具体代码为

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)卸载此热键!
精彩图集
精彩文章
热门标签
INSERT_INTO_
获取主机名称
js改变背景图片
值不同的列
AVL树
exls
分割大文件
Httperr.Log
广播
通信模
Banner
类型
多态
原因分析
文件夹大小
object转数组
-bash
SetLocale
用户管理
阿里云主机
证书加密
console.log
三元表达式
字符串位置
组件
sae
velocity
ARP攻击
无法复制文件
bat
常常出现的
淡入
perl
jquery解析json
Slic
马赛克
增加账户
生命周期
$符
主键
youtube视频
上传视频
通过Socket
无用
httpclient
temp
屏幕快照
所有颜色值
python线程
Linux集群
采集器
系统分享
高效随机
yii
类变量
python函数调用
集合运算符
c语言http请求
配置心得
变量的值
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229