【学习资料】 - PYTHON3关于win32con.WM_MOUSEMOVE模拟鼠标移动问题

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)    #   定义终点

 

这样就完成了鼠标拖动的动作。

上一篇:C# 利用SendMessage实现winform与wpf之间的消息传递


下一篇:如何关闭(不杀死)另一个没有可见窗口的应用程序? (C#)