替换全局热键
Replace global hotkey
我有一个位于托盘中的应用程序,我想定义几个热键来触发我的程序中的事件。
我从@AaronLS 在这个问题中的出色回答中找到了灵感:Set global hotkeys using C#
如果我注册一个已被另一个应用程序定义的热键 RegisterHotKey
将 return false 并且不注册它。那么如何覆盖或替换热键呢?
So how can I override or replace a hot key?
从表面上看,你不能。那是设计使然。想象一下,如果程序可以随意劫持其他程序的热键——那可不是一件愉快的事。
The Win32 UnregisterHotKey
function 要求调用者是使用 RegisterHotKey
注册的同一线程,这使得另一个程序无法注销另一个程序的热键:
UnregisterHotKey
function:
Frees a hot key previously registered by the calling thread.
您可以做的是使用 Win32 将代码注入远程进程(假设您自己的进程有权执行此操作)然后在该进程的 UI 线程然后调用 UnregisterHotKey
- 但这是另一个问题。
我有一个位于托盘中的应用程序,我想定义几个热键来触发我的程序中的事件。
我从@AaronLS 在这个问题中的出色回答中找到了灵感:Set global hotkeys using C#
如果我注册一个已被另一个应用程序定义的热键 RegisterHotKey
将 return false 并且不注册它。那么如何覆盖或替换热键呢?
So how can I override or replace a hot key?
从表面上看,你不能。那是设计使然。想象一下,如果程序可以随意劫持其他程序的热键——那可不是一件愉快的事。
The Win32 UnregisterHotKey
function 要求调用者是使用 RegisterHotKey
注册的同一线程,这使得另一个程序无法注销另一个程序的热键:
UnregisterHotKey
function:Frees a hot key previously registered by the calling thread.
您可以做的是使用 Win32 将代码注入远程进程(假设您自己的进程有权执行此操作)然后在该进程的 UI 线程然后调用 UnregisterHotKey
- 但这是另一个问题。