一、安装
# 自己配置清华镜像,不然太慢了
pip install win32api
二、demo消息
import win32api
import win32con
win32api.MessageBox(None,"Hello,pywin32!","pywin32",win32con.MB_OK)
三、实例(操作记事本、鼠标)
- 先新建一个
cs123.txt
,这个需要我们cs123.txt
启动的情况下(在后台)才能用
import win32gui
import win32con
import win32api
win = win32gui.FindWindow(None, "cs123.txt - 记事本")
# 获取子窗体(记事本内部的编辑区域)
edit = win32gui.FindWindowEx(win,None,'Edit',None)
# 输入文本
win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, 'Hello World!')
# 回车 win32con.WM_KEYDOWN按键-----VK_XXX这里是return所以是回车键
win32gui.PostMessage(edit,win32con.WM_KEYDOWN,win32con.VK_RETURN,0)
# 设置指定窗口的显示状态。
win32gui.ShowWindow(win, win32con.SW_SHOW)
# 设置为最前窗口
win32gui.SetForegroundWindow(win)
# 设置鼠标位置
win32api.SetCursorPos((5, 1050))
# 左单键击
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# 关闭窗口
# win32gui.PostMessage(win32gui.FindWindow('Notepad', None), win32con.WM_CLOSE, 0, 0)
print(win)
print(edit)
这里的
"cs123.txt - 记事本"
是须要的,桌面只是到txt
- ==我们一般又该如何知道句柄呢?==下载
spy++
启动,然后f5
- 看到上面的查看程序工具后面这个图标按钮,通过它去找到我们指定的程序
- 放在内部是编辑的句柄
- 外部框才是我们需要的
如果获取浏览器,只能获取到当前页面的句柄、
四、鼠标键盘
Win32con
函数一般作为win32gui win32api
的参数调用
KEYEVENTF_KEYUP
:按键松开
MOUSEEVENTF_XXXXXX
:鼠标对应的操作
VK_XXXXXX
:键盘按键操作,后跟键名称(如VK_TAB
)
键盘按键
win32api.keybd_event
键盘事件
鼠标基本操作
win32api.mouse_event
键盘事件
# 获取鼠标当前位置的坐标
cursor_pos = win32api.GetCursorPos()
# 将鼠标移动到坐标(x,y)处
win32api.SetCursorPos((x, y))
# 左单键击
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
# 右键单击
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
# 鼠标左键按下-放开
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
# 鼠标右键按下-放开
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
代码放置在gitee
,仓库地址:https://gitee.com/lwstudy/my-py