C# 替换全局热键
我有一个应用程序,生活在托盘,我想定义几个热键,这将触发我的程序中的事件 我从@AaronLS在这个问题上的出色回答中得到了灵感: 如果我注册了一个已经由另一个应用程序定义的热键,C# 替换全局热键,c#,.net,windows,hotkeys,C#,.net,Windows,Hotkeys,我有一个应用程序,生活在托盘,我想定义几个热键,这将触发我的程序中的事件 我从@AaronLS在这个问题上的出色回答中得到了灵感: 如果我注册了一个已经由另一个应用程序定义的热键,RegisterHotKey将返回false,并且不会注册它。那么如何覆盖或替换热键呢 那么如何覆盖或替换热键呢 表面上看,你不能。那是故意的。想象一下,如果程序可以随意劫持其他程序的热键,那将是不愉快的 要求调用者是使用RegisterHotKey注册的同一线程,这使得另一个程序无法注销另一个程序的热键: 取消注册热
RegisterHotKey
将返回false,并且不会注册它。那么如何覆盖或替换热键呢
那么如何覆盖或替换热键呢
表面上看,你不能。那是故意的。想象一下,如果程序可以随意劫持其他程序的热键,那将是不愉快的
要求调用者是使用RegisterHotKey
注册的同一线程,这使得另一个程序无法注销另一个程序的热键:
取消注册热键
功能:
释放调用线程先前注册的热键
您可以使用Win32将代码注入远程进程(假设您自己的进程有权限这样做),然后在该进程的UI线程中调度代码,然后调用UnregisterHotKey
——但这是另一个问题