我想在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