import win32gui
import win32con
import win32api
import time
win = win32gui.FindWindow('Notepad','新建文本文档 (2).txt - 记事本') #文本文档 参数1:类名,参数2:窗口标题
tid = win32gui.FindWindowEx(win,0,'Edit',None) #通过父窗口找子窗口,编辑窗口
win32gui.SetForegroundWindow(win) #使窗口win放到最前面
left,top,right,botton=win32gui.GetWindowRect(win) #获得窗口的位置,得到距离左上的位置以及框体的宽高
move_x = left+200 #设置鼠标坐标x值。坐标增加偏移值,使得鼠标位于可以拖动的框体的位置上
move_y = top+10 #设置鼠标坐标y值。坐标增加偏移值,使得鼠标位于可以拖动的框体的位置上
win32api.SetCursorPos((move_x, move_y)) #鼠标挪到窗口所在坐标
time.sleep(2)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0) #鼠标左键按下
win32api.SetCursorPos((200, 10)) #鼠标左键按下的同时移动鼠标位置,实现拖动框体,这里是要移动到左上角,但是不能写(0,0),(0,0)+(x偏移值,y偏移值),确保框体的左上角在窗口的左上角
time.sleep(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0) #鼠标左键抬起
pos = win32api.GetCursorPos()
win32gui.Findwindow(param1,param2)方法查找窗口句柄参数及对应参数值获取用Spy++查看
win32gui.Findwindow(param1,param2):param1需要传入窗口的类名,param2需要传入窗口的标题

记录下mouse_event函数的使用方法
转载自https://blog.csdn.net/oNiShiMa/article/details/9380091
mouse_event (long dwFlags,long dx,long dy,long cButtons,long dwExtraInfo)
long dwFlags :MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。
MOUSEEVENTF_MOVE:表明发生移动。
MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。
long dx,long dy :指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置
long cButtons : dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。
long dwExtraInfo :指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。
|