python模拟按键与鼠标操作(一)

简介

有时候我们需要使用python执行一些脚本,可能需要让程序自动按键或自动点击鼠标,来模拟人操作键盘、鼠标,这里推荐使用pywin32库,安装方式如下:
输入:pip install pywin32

一、相关函数介绍

win32api.keybd_event()
该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo)
第一个参数:虚拟键码(键盘键码建议网上搜下);
第二个参数:硬件扫描码,一般设置为0即可;
第三个参数:函数操作的一个标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,也可设置为0即可,如果值为KEYEVENTF_KEYUP则该按键被释放;
第四个参数:定义与击键相关的附加的32位值,一般设置为0即可。

二、模拟键盘操作

例1:输出键盘字符f

import win32con
import win32api
import time

#函数功能:按下按键
**点击键盘的f键,其中70是f虚拟键码**
win32api.keybd_event(70,0,0,0)     #代表按下f键
time.sleep(0.02)
win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)  #释放f键

输出结果:f

例2:输出换行(enter)、向下箭头(down)

import win32con
import win32api
import time

#13为虚拟键码,是enter对应的键盘码值
win32api.keybd_event(13,0,0,0)          
time.sleep(0.02)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

输出结果:

>>>

#向下箭头(down),40代表down
win32api.keybd_event(40,0,0,0)                           
win32api.keybd_event(40,0,win32con.KEYEVENTF_KEYUP,0)   #向下箭头(down),40代表down

例3
模拟键盘全选,复制、粘贴。

import win32con
import win32api
import time


#按下ctrl+a,全选
#17为ctrl键码值,65为a的键码值
win32api.keybd_event(17,0,0,0)
win32api.keybd_event(65,0,0,0)
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)

#按下ctrl+c,67键码值为c
win32api.keybd_event(17,0,0,0)
win32api.keybd_event(67,0,0,0)
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(67, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)

#按下ctrl+v
win32api.keybd_event(17,0,0,0)
win32api.keybd_event(86,0,0,0)  
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)

三、模拟鼠标操作

1、相关函数

win32gui.GetCursorPos()
获取当前鼠标坐标,它获取的是鼠标相对屏幕的左上角的距离,单位是像素。

pos = win32gui.GetCursorPos()     #鼠标现在屏幕上方的位置
print(pos)

#输出结果
(655, 445)

2、模拟鼠标左键点击

调用函数win32api.mouse_event()
#鼠标事件

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0)   #左键按下      
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0)		#左键抬起

其中鼠标左键点击也可以这样写

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)

将所标移到指定位置然后左键点击

#x,y指代鼠标将要移动的位置,也即坐标
win32api.SetCursorPos((x,y))                               
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)
3、模拟鼠标右键点击
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN | win32con.MOUSEEVENTF_RIGHTUP,0,0,0,0)  #右键点击
4、界面出现下拉框可循环点击使页面下滑
win32api.SetCursorPos((x,y))
for i in range(5):                        
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP,0,0,0,0) 

你可能感兴趣的:(python自动化办公)