【发布时间】:2013-01-28 08:31:35
【问题描述】:
我必须编写一个脚本来在后台的不同程序中模拟一些键盘事件。这是我的代码:
pwin = win32ui.FindWindow(None,r'someprograme')
pwin.SendMessage(win32con.WM_KEYDOWN,18)
pwin.SendMessage(win32con.WM_KEYDOWN,68)
pwin.SendMessage(win32con.WM_KEYUP,18)
pwin.SendMessage(win32con.WM_KEYUP,68)
pwin.SendMessage(win32con.WM_KEYDOWN,13)
pwin.SendMessage(win32con.WM_KEYUP,13)
但似乎什么也没发生。那我该怎么办?我试过 PostMessage func 似乎仍然无法做到。
【问题讨论】:
-
首先,您确定
pwin是正确的窗口吗?其次,它有键盘焦点吗?第三,你为什么不通过两个参数? (我还没有检查文档;也许 0 总是适合 lparam?)最后,那些键是什么? (你知道WM_KEYDOWN不能用于ALT的大多数用途,对吧?) -
另外,您要驱动什么应用程序?
-
看来我没有找到正确的窗口。我想向程序发送 ALT+D 以打开某事。那么如果 WM_KEYDOWN 不能使用,我怎么发送呢?
-
对于您的第一点:如果您没有合适的窗口,其他的东西都不重要;你显然必须先找到正确的窗口,否则你甚至无法测试。
-
第二个:为什么要向程序发送Alt+D?你想打开什么?通常这会弹出菜单栏中的第一个菜单,名称中带有下划线“D”。那是你想要做的吗?如果是这样,请参阅我的回答,其中我解释了为什么它在许多应用程序中不起作用,以及该怎么做。