博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在WPF中如何注册热键

Posted on 2009-07-09 09:00  我是程序员  阅读(2333)  评论(0编辑  收藏  举报

不说废话,直接看代码吧,其关键就是 System.Windows.Interop.HwndSource类。

第一步:注册热键,需要使用API函数,具体的参照网上的其它文章。唯一需要注意的是需要使用KeyInterop.VirtualKeyFromKey函数将

WPF的Key枚举转化为API函数可以使用的VirtualKeyCode :

注册热键API函数定义

 第二步:注册热键处理函数,主要的难点就在这里,在.NET的WinForm程序中一般使用重写Form的WinProc方法或者注册IMessageFilter来实现的,

但是在WPF中以上两种方式都无法获得热键消息的处理机会,除非是在WPF程序中隐藏一个常规的Form(最开始就是这么弄得,后来觉得实在是太丑陋了)

注册热键处理函数

 以上代码在Windows2008下测试通过。