PYTHON3关于win32con.WM_MOUSEMOVE模拟鼠标移动问题
网上针对pywin32模块的教程较少,本人也是一路摸黑慢慢试~
先放代码:
winname = u'雷电模拟器'
subclassname = 'RenderWindow'
handle = win32gui.FindWindow(0, winname)
if handle == 0:
pass
else:
win32gui.ShowWindow(handle, 1)
win32gui.SetForegroundWindow(handle)
subhandle = win32gui.FindWindowEx(handle, None, subclassname, None)
print(subhandle) # 子句柄
print('%x' %subhandle) # 十六进制子句柄
point = win32api.MAKELONG(400, 200) # 定义起始点
point1 = win32api.MAKELONG(100,200) # 定义终点 win32gui.SendMessage(subhandle,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON, point) # 起始点按住
win32gui.SendMessage(subhandle,win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON,point1) # 移动到终点
win32gui.SendMessage(subhandle, win32con.WM_LBUTTONUP, 0, 0) # 松开 time.sleep(1)
准备写一个简单的挂机脚本,发现需要用到鼠标拖动的动作,就研究了下:
相对于鼠标直接点击,拖动鼠标多了几个动作,首先要按住鼠标左键,然后不松左键的情况下移动,再松开左键
win32gui.SendMessage(subhandle,win32con.WM_LBUTTONDOWN,win32con.MK_LBUTTON, point) # 起始点按住
win32gui.SendMessage(subhandle,win32con.WM_MOUSEMOVE, win32con.MK_LBUTTON,point1) # 移动到终点
win32gui.SendMessage(subhandle, win32con.WM_LBUTTONUP, 0, 0) # 松开
光有动作没有点是不行的,win32gui.SendMessage对于坐标点用专门的函数获取:
point = win32api.MAKELONG(400, 200) # 定义起始点
point1 = win32api.MAKELONG(100,200) # 定义终点
这样就完成了鼠标拖动的动作。