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

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

求赐教!

阅读 19.3k
1 个回答
新手上路,请多包涵

试试把SendMessage换成PostMessage

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏