【发布时间】:2017-08-22 07:33:18
【问题描述】:
我目前的问题是模拟任意程序(例如正在运行的游戏)的击键输入。
目前我在 Windows 上使用 win32 库来查找窗口(win32gui.FindWindow)并获取焦点(通过 win32gui.SetForegroundWindow),然后发送键盘输入(win32api.keybd_event)。
如果我只向单个程序发送输入,但我希望并行化,同时玩多个游戏,这很有效。这不适用于我当前的方法,因为两个应用程序都需要“聚焦”键才能转到正确的应用程序,从而相互干扰。
理想情况下,我想要将输入发送到给定窗口、不需要 focus 并且独立于其他窗口或当前聚焦窗口的输入。
【问题讨论】:
-
不幸的是,该程序没有像记事本那样的“编辑”子程序,并且无法识别通过 sendmessage 和 postmessage 发送的键输入。
-
你不需要“编辑”孩子。只需将消息发送到此应用程序的主窗口。编辑子项对记事本很重要,但 sendmessage 对任何 Windows 程序都有效
-
您可以使用任何类似 spy++ 的 Windows 实用程序来检查窗口应用程序的内部,您是否需要“编辑”子级。 stackoverflow.com/questions/4088368/… 这个链接也不能直接回答你的问题,但如果你愿意,这个实用程序可以帮助你。 :)
-
你可以从这里开始阅读:msdn.microsoft.com/en-us/library/windows/desktop/…这篇文章解释了消息在windows中是如何工作的。附言此链接也不能回答您的问题,它只会让您了解 sendmessage 和其他消息传递功能的工作原理