在Python中将密钥发送到非活动窗口
我试图在Python程序的另一个进程中按下一个键。我已经尝试了win32 api,但不知怎么的,这段代码什么也没做:在Python中将密钥发送到非活动窗口,python,winapi,process,window,key,Python,Winapi,Process,Window,Key,我试图在Python程序的另一个进程中按下一个键。我已经尝试了win32 api,但不知怎么的,这段代码什么也没做: import win32gui import win32con import win32api hwnd = win32gui.FindWindow("notepad", "prueba.txt: Bloc de notas") if(hwnd != 0): win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, win32c
import win32gui
import win32con
import win32api
hwnd = win32gui.FindWindow("notepad", "prueba.txt: Bloc de notas")
if(hwnd != 0):
win32api.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32api.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
while(True):
win32api.SendMessage(
hwnd,
win32con.WM_CHAR,
ord('x'),
0)
else:
print("The window is closed")
当然,我希望对非活动窗口执行此操作。有什么解决方案或替代方案吗
谢谢目标窗口错误。记事本有多个窗口:它有一个带子编辑控件的框架窗口。要使代码正常工作,您应该在代码中找到一个子帧(=hwnd),它是一个编辑控件,并向它发送WM_字符。使用(但添加错误检查)
如果您想循环发送邮件,您应该添加一些“睡眠”呼叫:-)谢谢大家。不支持postmessage的模拟器和游戏呢?我尝试过keybd_事件,但它非常慢,因为您必须等待0.1秒。如果您不能或不想使用PostMessage WM_CHAR(或WM_KEYDOWN),则只剩下SendInput。我不知道SendInput需要任何“等待”;看看张贴的代码是否适合你,你应该接受答案。当你有更多的重复次数时,你可能可以对答案进行投票。我认为SendInput在模拟器和游戏中不起作用:(无论如何,如果我的代码帮助你用“x”填充记事本,你可以接受答案:-)如果
keybd_event
起作用,SendInput
也应该起作用。如果SendInput
不起作用,我不知道还有其他解决方案。
hwndMain = win32gui.FindWindow("notepad", "prueba.txt: Bloc de notas")
hwndEdit = win32gui.FindWindowEx( hwndMain, 0, "Edit", 0 )
win32api.PostMessage( hwndEdit,win32con.WM_CHAR, ord('x'), 0)