使用pyinstaller隐藏到exe时,Python键盘模块无法捕获击键

时间:2018-09-19 10:40:15

标签: python keyboard exe pyinstaller keylogger

我使用(keyboard)模块在Windows 10上的Python 3.6中编写了键盘记录程序功能。当我在Python上运行它并捕获所有击键时,它可以完美地工作。但是,当我使用Pyinstaller(3.4)将其转换为exe时,无论我按什么键或多少键,它都不会捕获任何东西。

代码是:

import keyboard

def keylogger():
    keyboard.start_recording()
    sleep(20)
    gen = keyboard.stop_recording()
    logs = str(list(keyboard.get_typed_strings(gen)))
    return logs

为什么在转换为exe时不捕获击键?它与Windows访问限制或Pyinstaller中可能缺少导入有关吗?

1 个答案:

答案 0 :(得分:0)

我的解决方法是在检测到键盘挂钩不起作用时重新运行exe:

keyboard.hook(self.__key_on)
keyboard.start_recording()
win32api.keybd_event(160, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0)
ev_list = keyboard.stop_recording()
if not ev_list:
    print("Couldn't set keyboard hooks. Trying once again...\n")
    time.sleep(2)
    dir_path = os.path.dirname(os.path.realpath(__file__))
    os.system(dir_path + r"\programr.exe")
    sys.exit(1)