向子窗口发送键事件

0 投票
1 回答
3443 浏览
提问于 2025-04-17 03:21

我正在用Python开发一个应用程序,这个程序可以向另一个外部应用发送键盘事件。我使用了pywin32这个包来设置外部应用,并发送我想要的按键:

import win32com.client as w32
shell = w32.Dispatch("WScript.Shell")

shell.AppActivate(desired_application)
shell.SendKeys("{ENTER}")

我使用的外部应用有一个虚拟键盘和一个文本区域,文本区域用来接收键盘事件。我想把按键事件(在这个例子中是'ENTER'键)发送到键盘区域(因为键盘会扫描字母,并用Enter键选择想要的字母)。但是,我的应用程序却把按键事件发送到了文本区域,而不是键盘。

我尝试用FindWindow和EnumChildWindow从win32gui获取我想要的窗口的句柄……那么,有没有办法把按键发送到外部应用的特定子窗口呢?

1 个回答

0

我成功地使用 EnumChildWindow 这个方法来列出应用程序中所有的窗口句柄,然后通过 PostMessage 发送消息。

   import win32api
   win32api.PostMessage(handler, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)

撰写回答