1

すべてのキーストロークをログに記録する簡単なプログラムを作成しようとしていますが、それを機能させる方法を理解するのに苦労しています。この問題の解決策がどこにも見つからないようです。

キーストロークを取得するためにpyHookを使用しています.OnKeyboardEvent(event)という関数を作成しました.この関数は、イベントをasciiにしてファイルに入れるためにcharに変換しますが、ファイルにはボックスしか含まれていません。ある種の無効な文字だと思います。かなりのデバッグを行った後、変換された char ではなく、ASCII 文字自体を出力することで奇妙なボックスが出力されることがわかりました。何が起こっているのかについての洞察は非常に高く評価されています。

以下は、OnKeyboardEvent 関数の重要な部分です。

def OnKeyboardEvent(event):

    if event.Ascii == 5:
        sys.exit(0)
    if event.Ascii != 0 or 8:
        f = open(file, 'r+')
        buffer = f.read()
        f.close()

        f = open(file, 'w')
        keylogs = chr(event.Ascii)
        print (keylogs)

こちらがキーボードを引っ掛ける部分

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()

pythoncom.PumpMessages()

Windows 10 を実行していて、問題に関係がある場合はメモ帳でファイルを開いています

4

1 に答える 1

1

event.KeyIDの代わりに試してみてくださいevent.Ascii。これが最善の解決策かどうかはわかりませんが、私にとってはうまくいきます。

于 2016-06-16T16:35:57.920 に答える