使pyHook与SendKeys协同工作

0 投票
1 回答
1317 浏览
提问于 2025-04-16 16:47

我正在尝试用Python写一个自动纠错的功能。我记录用户的输入,当他们停止输入一秒钟后,我想把所有内容清空,然后重新输入纠正后的句子。

下面的代码运行得很好,但有一个问题,就是SendKeys的速度很慢。我觉得PumpMessages的调用可能在某种程度上影响了它。有没有人知道我该如何解决这个问题?

import threading

import pyHook
import pythoncom
from SendKeys import SendKeys

# Store typed keys.  Correct words when stop typing for a bit.
def info_handler():
  def event_info(e):
    if e.MessageName == 'key down':
      v.keys_pressed.append(e.Key)
      if v.t:  v.t.cancel()
      v.t = threading.Timer(1, correct_words)
      v.t.start()
    return True
  return event_info

def correct_words():
  SendKeys('{BS %i}' % len(v.keys_pressed))

# Listen to keys.
class v:
  keys_pressed = []
  t = None
hm = pyHook.HookManager()
hm.KeyDown = info_handler()
hm.HookKeyboard()
pythoncom.PumpMessages()

1 个回答

0

没事了。我只需要在调用 SendKeys 之前先调用 hm.UnhookKeyboard()。

编辑: 有人问我想要更多信息。我决定把我关于键盘的实验放到 GitHub 上: https://github.com/JesseAldridge/Keyboard-Tricks

撰写回答