替换全局热键

时间:2019-07-29 20:47:52

标签: c# .net windows hotkeys

我有一个应用程序驻留在任务栏中,我想定义一些服务器热键,这些热键会触发程序中的事件。

我从@AaronLS的出色回答中获得了灵感,该问题是Set global hotkeys using C#

如果我注册了另一个应用程序RegisterHotKey已定义的热键,将返回false而不进行注册。那么如何覆盖或替换热键?

1 个答案:

答案 0 :(得分:1)

  

那么我该如何覆盖或替换热键?

表面上,你不能。那是设计使然。试想一下,如果程序可以随意劫持其他程序的热键,那将不会令人愉快。

The Win32 UnregisterHotKey function要求调用方与使用RegisterHotKey注册的线程相同,这使得另一个程序无法注销另一个程序的热键:

  

UnregisterHotKey功能:

     

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

您可以 做的是使用Win32将代码注入到远程进程中(假设您自己的进程具有执行此操作的权限),然后在该进程的UI线程中安排代码,然后调用{{1} }-但这是另一个问题。