我已经构建了一个winforms应用程序,它通过重写ProcessCmdKey方法来检查CTR + ALT + S和CTRL + ALT + E按键.这很好用,但是如果屏幕保护程序继续然后关闭,则表单没有焦点,并且不会截取按键.即使表格没有焦点,我怎样才能收到这些?
Alexander Werner 在Code Project上有一个" System Hotkey Component "项目,它将RegisterHotkey()API封装到一个非常容易实现的用户控件中.
我知道两种方法:
RegisterHotKey() - 您可以使用RegisterHotKey()函数来定义系统范围的热键.如果用户按下热键,Windows将发送WM_HOTKEY消息.
Win32 Hooks - 这是一个最初设计用于支持基于计算机的培训(CBT)应用程序的旧API,但我相信Windows仍然支持它.API允许您拦截并可能修改任何窗口的消息,鼠标操作和击键.
这些是Win32 API,而不是.NET API,但.NET使用与Windows相同的底层组件,因此这些方法应该与.NET一起使用.