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) # 定義終點
這樣就完成了鼠標拖動的動作。