【问题标题】:Replace global hotkey替换全局热键
【发布时间】:2019-12-07 05:27:01
【问题描述】:

我有一个位于托盘中的应用程序,我想定义多个热键来触发我的程序中的事件。

我从@AaronLS 在这个问题中的出色回答中找到了灵感:Set global hotkeys using C#

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

【问题讨论】:

    标签: c# .net windows hotkeys


    【解决方案1】:

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

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

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

    UnregisterHotKey函数:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 2010-12-12
      • 2016-02-22
      • 2018-05-01
      • 2011-03-15
      • 1970-01-01
      • 2011-05-28
      • 2017-12-20
      相关资源
      最近更新 更多