替换全局热键
Posted
技术标签:
【中文标题】替换全局热键【英文标题】:Replace global hotkey 【发布时间】:2019-12-07 05:27:01 【问题描述】:我有一个位于托盘中的应用程序,我想定义多个热键来触发我的程序中的事件。
我从@AaronLS 在这个问题中的出色回答中找到了灵感:Set global hotkeys using C#
如果我注册一个已经由另一个应用程序定义的热键RegisterHotKey
将返回 false 并且不注册它。那么如何覆盖或替换热键?
【问题讨论】:
【参考方案1】:那么如何覆盖或替换热键?
表面上,你不能。这是设计使然。想象一下,如果程序可以随意劫持其他程序的热键 - 那将是不愉快的。
The Win32 UnregisterHotKey
function 要求调用者与使用RegisterHotKey
注册的线程相同,这使得另一个程序无法取消注册另一个程序的热键:
UnregisterHotKey
函数:释放之前由调用线程注册的热键。
您可以做的是使用 Win32 将代码注入远程进程(假设您自己的进程有权执行此操作)然后在该进程的 UI 线程中调度代码,然后调用 UnregisterHotKey
-但这是另一个问题。
【讨论】:
以上是关于替换全局热键的主要内容,如果未能解决你的问题,请参考以下文章