如何解决程序对我在 Python 中用 win32api 发送的消息没有反应
大家。
我试图通过远程控制一些程序来学习 winapi/pywin32。所以我决定尝试一些不同的东西并选择 The Powder Toy 进行测试。然后我以that answer为例,写了这个(也是用Spy++确定了一些参数):
import win32gui
import win32con
import win32api
from time import sleep
hwndMain = win32gui.FindWindow(None,"The Powder Toy")
while True:
win32api.PostMessage(hwndMain,win32con.WM_KEYDOWN,0x44,2097153)
win32api.PostMessage(hwndMain,win32con.WM_KEYUP,0)
sleep(1)
它需要 HWND,正如它应该的那样,也向 The Powder Toy 的窗口发送了类似的消息,但由于某种原因它没有反应。例如:
当我按“d”时:
...WM_KEYDOWN nVirtKey:'D'cRepeat:1 ScanCode:20fExtended:0fAltDown:0fRepeat:0fUp:0
...WM_CHAR chCharCode:'100'(100)cRepeat:1 ScanCode:20fExtended:0fAltDown:0fRepeat:0fUp:0
...WM_KEYUP nVirtKey:'D'cRepeat:1 ScanCode:20fExtended:0fAltDown:0fRepeat:1fUp:1
当我尝试发送“d”时:
...WM_KEYDOWN nVirtKey:'D'cRepeat:1 ScanCode:20fExtended:0fAltDown:0fRepeat:0fUp:0
...WM_CHAR chCharCode:'100'(100)cRepeat:1 ScanCode:20fExtended:0fAltDown:1fRepeat:0fUp:0
...WM_KEYUP nVirtKey:'D'cRepeat:1 ScanCode:00fExtended:0fAltDown:1fRepeat:0fUp:0
...WM_CHAR chCharCode:'100'(100)cRepeat:1 ScanCode:00fExtended:0fAltDown:1fRepeat:0fUp:0
有人可以解释为什么它不起作用,如果可能,如何解决它?
解决方法
看起来我必须将 ScanCode 提供给 WM_KEYUP 的 lParameters 以及 0x44,才能使粉末玩具工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。