我有一个应用程序驻留在任务栏中,我想定义一些服务器热键,这些热键会触发程序中的事件。
我从@AaronLS的出色回答中获得了灵感,该问题是Set global hotkeys using C#
如果我注册了另一个应用程序RegisterHotKey
已定义的热键,将返回false而不进行注册。那么如何覆盖或替换热键?
答案 0 :(得分:1)
那么我该如何覆盖或替换热键?
表面上,你不能。那是设计使然。试想一下,如果程序可以随意劫持其他程序的热键,那将不会令人愉快。
The Win32 UnregisterHotKey
function要求调用方与使用RegisterHotKey
注册的线程相同,这使得另一个程序无法注销另一个程序的热键:
UnregisterHotKey
功能:释放先前由调用线程注册的热键。
您可以 做的是使用Win32将代码注入到远程进程中(假设您自己的进程具有执行此操作的权限),然后在该进程的UI线程中安排代码,然后调用{{1} }-但这是另一个问题。