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)卸载此热键!
精彩图集
精彩文章
热门标签
php引用传值
map()
吓倒
定要
程连接慢
报错
W3C
ip数据
MySQL数据库引擎
取模运算
JDBC示例
10种
c语言知识点
IBM
误删数据
页面乱码
REPLACE
vbs类
Moxa
python发邮件
自动播放
延时处
row_count
$_SESSION
文章模块
addClass
通讯录
file,value
重复元素
时间格式化
0x8007007e
solr创建索引
梯形法
ORA-01114
stl算法
前两个页面
模版方法
视频播放
编码格式
php php短网
lambda
执行shell命令
urlencode
IIS8.5
编译python
保留
细说
int*p[]
epoll
导出插入
删除自身
jquery插件
开3389
图片旋转
Magento
int(*p)[]
countdownlat
漂亮的表格效
用此
点击链接
赞助商链接
@CopyRight 2002-2008, 1SOHU.COM, Inc. All Rights Reserved QQ:1010969229

