我想在Python中编写一个自动更正机制。我记录用户的按键,当他们停止输入一秒钟时,我想删除所有内容并重新输入修正的句子。让pyHook和SendKeys一起工作
下面的代码工作正常,除了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()
FWIW,如果这是针对所有当前正在运行的应用程序(使用钩子建议)运行的实用程序,则此方法听起来像是可能有一些乐趣边缘情况下弄清楚。例如;如果用户在多行窗口中输入,并使用例如。键入时方向键,您从此发送的任何退格可能会删除错误的文本。或者,如果用户在其键入时使用退格键,则最终可能会删除太多的两个字符。另外,在某些用户界面中,如资源管理器,键入更改选择;发送退格文件将会改变文件夹。 – BrendanMcK 2011-11-27 11:33:03
是的。这实际上只是一个实验,我最终放弃了这个实验,因为有太多烦人的边缘案例,比如你提到的那些。 – 2011-11-28 02:49:24