使用 Python 2.6 设置全局热键

Posted

技术标签:

【中文标题】使用 Python 2.6 设置全局热键【英文标题】:Set global hotkey with Python 2.6 【发布时间】:2011-03-21 06:14:30 【问题描述】:

我想在 python 2.6 中设置一个全局热键来监听键盘快捷键 ctrl + Dctrl+ alt+ D 在 windows 上,请帮帮我

【问题讨论】:

这个主题也包含在 [here][1] 中,但是使用 Python 3。[1]:***.com/questions/16615087/… github.com/boppreh/keyboard#keyboard.add_hotkey 【参考方案1】:

Tim Golden 的python/win32 站点是用python 进行win32 相关编程的有用资源。特别是,这个例子应该会有所帮助:

Catch system-wide hotkeys

【讨论】:

【参考方案2】:

我建议pyhk。它允许在 python 中进行全局范围的热键注册,并附带示例和文档。 Pyhk 建立在 pyhook 之上。

热键注册很简单:

pyhk.addHotkey(SomeHotkey,SomeFunction)

【讨论】:

是的,只有 windows,因为它基于 pyhook。【参考方案3】:

wx.Window 类的 RegisterHotKey 方法是您正在寻找的——正如文档所说,

注册系统范围的热键。每一个 用户按下热键的时间 在这里注册,这个窗口将 接收热键事件。它会 接收事件,即使 应用程序在后台并且 没有输入焦点,因为 用户正在与其他人一起工作 应用。绑定事件处理程序 此热键的功能使用 EVT_HOTKEY id 等于 hotkeyId。退货 如果热键已注册,则为真 成功。

所以,创建一个 `wx.Window 的实例,用这个方法注册你想要的热键,如果你想在一个单独的事件处理程序中而不是在窗口本身(后者是默认值)。

您在此过程中是否还有其他不完全清楚的内容...?如果是这样,请编辑您的问题以添加您可能遇到的任何其他问题!

【讨论】:

由于 RegisterHotKey 接受来自 win32con 的密钥,因此该解决方案对他不起作用,因为他需要 win32con 中不存在的 VK_【参考方案4】:

如果你想在你的 wxPython 程序中使用热键(我假设你这样做是因为 wxPython 标签),那么你应该使用 wx.AcceleratorTable。

【讨论】:

以上是关于使用 Python 2.6 设置全局热键的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 设置全局热键

具有平台 API 的 C++ 全局热键

带有 NotifyIcon 的无窗口应用程序的全局热键

使用全局热键调用 powershell 函数

全局拦截热键,但保持原始行为

在 C# 中使用全局热键粘贴当前时间