C#注册窗体热键
来源:互联网 发布:手机淘宝 退货率 编辑:程序博客网 时间:2024/06/05 11:12
热键:通过键盘上的组合键对目标窗体实施用户相关的操作,例如,如果你的机器上安装了金山词霸2007
,当在键盘上按 Ctrl Alt Z 这样的组合时,会显示窗体或最小化到隐藏。这样的是通过WINAPI的RegisterHotKey 函数实现的。
.net framework2.0并不提供有关窗体热键注册的类,因此可通过DllImport导出该API函数
//注册热键的函数
[DllImport("user32.dll",SetLastError=true)]
static extern bool RegisterHotKey(IntPtr hWnd,int id,int fsModifiers,
int vk);
//释放由RegisterHotKey注册的热键
[DllImport("user32.dll",SetLastError=true)]
static extern bool UnregisterHotKey(IntPtr hwnd,int id);
并不是在代码块调用RegisterHotKey就完事,还必须在窗体过程里处理WM_HOTKEY通知,才能实现效果。
//下载地址:http://download.csdn.net/source/1837701 ----找到 c#窗体热键,那个标题的
HotKeyModifiers枚举提供对 ctrl alt shift win 键的封装
HotKeyRegister 类 是在c#中实现注册窗体热键的类,这个类需要在Form.WndProc中对WM_HOTKEY通知的处理才能对热键作出响应.
HotKeyRegister2从HotKeyRegister类 和IMessageFilter接口继承,从IMessageFilter接口继承的类,可通过调用Application.AddMessageFilter方法,对窗体的消息过程添加筛选,由于Form的并不提供对WM_HOTKEY通知的事件对象,因此使用Application.AddMessageFilter 添加一个在产生WM_HOTKEY通知时的事件回调,即HotKeyRegister2.HotKeyEventArgs事件,如果一个Form实例化一个HotKeyRegister2类型的对象,将在发生WM_HOTKEY通知时,产生一个HotKeyRegister2.HotKeyEventArgs事件,用于可根据这个事件参数HotKeyEventArgs类,来获取有关HotKeyRegister2类实例的信息以及WM_HOTKEY的Message
值得注意的是,Application类是一个静态类,在运行Form实例和调用Application.AddMessageFilter方法必须在同一个线程里,否则会有异常。某个窗体的热键注册可通过HotKeyRegister2类在某个客户端实现,而并非总是在Form类的定义里,只要是,它们在同一个线程里就OK了
另外 某些情况下,窗体句柄的值可能发生改变,这时调用原有的WM_HOTKEY不会进行处理,这时就要重新注册热键了,这时需要调用SetHotKeyRegister(System.IntPtr targetHwnd),这个是保留原有的热键组合,
或者调用SetHotKeyRegister(System.IntPtr targetHwnd, Feng.Win32API.HotKeyModifiers hkModifiers, System.Windows.Forms.Keys virtualKey),这个则是重新注册新的热键组合
- C#注册窗体热键
- C#注册系统热键
- C#注册全局热键
- C# 注册系统热键
- C# 注册系统热键
- C#注册全局热键
- C# 注册系统热键
- c#注册全局热键
- C#注册全局热键
- c#注册热键 及热键虚拟表
- C#注册热键【快捷键】代码
- 注册热键,调出隐藏的窗体
- C#全局热键设置与窗体热键设置实例
- 【转载】C#窗体热键与全局热键设置
- C#注册全局热键的方法
- C# 如何实现热键注册 RegisterHotKey
- C# 如何实现热键注册 RegisterHotKey
- C# 如何实现热键注册 RegisterHotKey
- NT缓存管理器(五)
- Windows 的Cache管理器
- javascript使用html中form表单中的select类建立级联菜单
- Oracle JOB 用法小结(转载)
- 配置文件的使用
- C#注册窗体热键
- 知道我的头像是什么吗?
- c++中运算符重载遇到的问题
- Vista下的Shadow SSDT服务函数名表
- GIT 版本控制软件(二) 基础篇
- 聊聊软件与吃饭(二)- 谈谈甲方选择软件供应商必须要分析的几个问题
- 定陶创维科技-自己创业的经历(1)
- 转【Windows源码分析】(一)初始化内核与执行体子系统
- C#生成二值混沌序列