Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换全局热键_C#_.net_Windows_Hotkeys - Fatal编程技术网

C# 替换全局热键

C# 替换全局热键,c#,.net,windows,hotkeys,C#,.net,Windows,Hotkeys,我有一个应用程序,生活在托盘,我想定义几个热键,这将触发我的程序中的事件 我从@AaronLS在这个问题上的出色回答中得到了灵感: 如果我注册了一个已经由另一个应用程序定义的热键,RegisterHotKey将返回false,并且不会注册它。那么如何覆盖或替换热键呢 那么如何覆盖或替换热键呢 表面上看,你不能。那是故意的。想象一下,如果程序可以随意劫持其他程序的热键,那将是不愉快的 要求调用者是使用RegisterHotKey注册的同一线程,这使得另一个程序无法注销另一个程序的热键: 取消注册热

我有一个应用程序,生活在托盘,我想定义几个热键,这将触发我的程序中的事件

我从@AaronLS在这个问题上的出色回答中得到了灵感:

如果我注册了一个已经由另一个应用程序定义的热键,
RegisterHotKey
将返回false,并且不会注册它。那么如何覆盖或替换热键呢

那么如何覆盖或替换热键呢

表面上看,你不能。那是故意的。想象一下,如果程序可以随意劫持其他程序的热键,那将是不愉快的

要求调用者是使用
RegisterHotKey
注册的同一线程,这使得另一个程序无法注销另一个程序的热键:

取消注册热键
功能:

释放调用线程先前注册的热键

您可以使用Win32将代码注入远程进程(假设您自己的进程有权限这样做),然后在该进程的UI线程中调度代码,然后调用
UnregisterHotKey
——但这是另一个问题