当前位置: 首页 > 工具软件 > PythonWin > 使用案例 >

python win32api sendmessage_python win32api模拟后台鼠标点击的问题。

段成益
2023-12-01

目前在开发脚本,结果遇到了这么个奇怪的事情

发现在句柄获取成功情况下,程序处于最小化/后台的时候,最后一句按键模拟的代码会起作用,

但是上面的两行鼠标的代码就不起作用,

一开始是感觉程序把这个api给屏蔽了,

但后来发现程序窗口在桌面但是没焦点的情况下 back1 那句话是有效的,

但是back2始终不起作用,

个人有一种猜想是代码起作用了,但是没点击到正确位置,窗口没有反应,导致以为没有效果。

然而这种猜想,我用chrome浏览器操作,在正确的坐标下是可以有点击事件触发的。所以我也不确定这种猜测是否正确。

另外我经过查询,发现有些程序启用了DirectX后,会绕过windows的消息机制,导致这个SendMessage失效,也许这也是原因,那这种情况该用什么好呢?

请大神赐教!

back1 - 鼠标左键按下

back2 - 鼠标左键弹起

long_position - 点击坐标坐标

hwnd - 窗口坐标

x,y - 后台鼠标点击坐标

long_position = win32api.MAKELONG(x, y)

time.sleep(0.05)

back1 = win32api.SendMessage(hwnd,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON,long_position)

time.sleep(0.05)#上下行代码不起作用(或者说是没有效果)

back2 = win32api.SendMessage(hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON,long_position)

time.sleep(0.05)

win32api.SendMessage(hwnd,win32con.WM_KEYFIRST,68,None)#起作用

求赐教!

 类似资料: