目前在开发脚本,结果遇到了这么个奇怪的事情
发现在句柄获取成功情况下,程序处于最小化/后台的时候,最后一句按键模拟的代码会起作用,
但是上面的两行鼠标的代码就不起作用,
一开始是感觉程序把这个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)#起作用
求赐教!
试试把SendMessage换成PostMessage