我使用(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中可能缺少导入有关吗?
答案 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)