pythonpython-3.xwindowspidkeystroke

How can I send keystrokes and mouse movement to a specific PID?


How can I send keystrokes and mouse movements to a specific running program through its PID. I've used both pywinauto and pynput, and they work great, but I want to send keys to a program that is not in focus. I found this question: How to I send keystroke to Linux process in Python by PID? but it never explains what filePath is a path to.

If you could help solve for this example, that would be great! I want to send the "d" key to an open Minecraft tab for 10 seconds, and then send the "a" key for the next 10 seconds and stop. I would need this to be able to run in the background, so it could not send the keys to the computer as a whole, but only to the Minecraft tab. I am on Windows 10 by the way.

Any help would be appreciated!


Solution

  • With ahk you can do this with Python+AutoHotkey

    pip install ahk
    pip install "ahk[binary]"
    
    from ahk import AHK
    from ahk.window import Window
    ahk = AHK()
    win = Window.from_pid(ahk, pid='20366')
    win.send('abc') # send keys directly to the window
    

    Note that some programs may simply ignore inputs when they are not in focus. However, you can test this works in general even when not in focus by testing with a program like notepad

    Full disclosure: I author the ahk library.