如何解决为什么Win32api.SendMessage无法在某些应用程序中执行鼠标单击
我使用的是Windows操作系统,并且试图对后台(非活动)应用程序进行点击,而无需将其显示在前面。 我已经在Microsoft Paint中成功完成了工作(在最小化的Paint实例上绘制一个点),但是由于某种原因,这似乎不适用于我正在编写此程序的基于Java的应用程序(RuneLite.exe)
一些其他信息:
- 绘画有很多子窗口,当我在特定的子窗口(类:Afx:00007FF758890000:8)上执行单击时,似乎只能执行单击操作。
- RuneLite窗口结构如下:
- RuneLite(类:SunAwtFrame)
- 未知(类:SunAwtCanvas)
- 未知(SunAwtCanvas类)
- 未知(类:SunAwtCanvas)
- RuneLite(类:SunAwtFrame)
- 我尝试使用上述所有3个窗口的句柄,但似乎没有一个起作用
- 该代码能够找到窗口的句柄并且正确(已通过Spy ++检查)
- 运行代码后,该窗口在任务栏中闪烁橙色,因此必须触发某些事件
- 我已经通过截屏窗口并使用绘制来查找特定位置的坐标来确定坐标。 (如果有更好的方法,请告诉我)
from pywinauto.application import Application
amount = 2
handles = []
def start_apps():
for i in range(amount):
a = Application()
a.start("D:\\Users\\Arno\\AppData\\Local\\RuneLite\\RuneLite.exe")
time.sleep(15)
handle = a.window().child_window(class_name="SunAwtCanvas",found_index=1).handle # select the most inner window
handles.append(handle)
def do_click(h,x,y):
long_position = win32api.MAKELONG(x,y) # simulate the mouse pointer and send it to the specified coordinates
win32api.SendMessage(h,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,long_position) # simulate mouse press
win32api.SendMessage(h,win32con.WM_LBUTTONUP,long_position) # Simulate mouse up
start_apps()
print(handles)
time.sleep(20)
for h in handles:
do_click(h,450,290)
有人知道为什么会这样吗?我该如何解决呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。