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模拟按键与鼠标操作(一)相关推荐
- python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中
一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...
- python模拟按键_Python实现windows下模拟按键和鼠标点击的方法
本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等. 前提先要安装 p ...
- python驱动级模拟按键_Python实现windows下模拟按键和鼠标点击的方法
本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等 # # _*_ c ...
- python模拟按键_python 模拟按键放在模拟器Python初学者的17个技巧
Python初学者的17个技巧,有需要的朋友可以参考下. W WW.002pc .COM认为此文章对<python 模拟按键放在模拟器Python初学者的17个技巧>说的很在理. 交换变量 ...
- .net中模拟键盘和鼠标操作
周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...
- windows 模拟按键与鼠标
windows 模拟按键与鼠标 函数功能:模拟按键或鼠标.一次完整的按键由KEYEVENTF_KEYDOWN和KEYEVENTF_KEYUP两个子事件组成. 函数原型: VOID keybd_even ...
- 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题
用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...
- python模拟按键包_今天玩点啥:利用python之PyUserInput实现模拟鼠标键盘操作,抢红包?聊天?自动下载?...
一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...
- python模拟按键网游_Python实现windows下模拟按键和鼠标点击的方法
转于博客 https://www.cnblogs.com/huidaoli/p/7398392.html,原作者:huidaoli # _*_ coding:UTF-8 _*_ import win3 ...
最新文章
- 如何复制一个目录里面的所有目录和文件
- 我看过且非常喜欢的《电影》和书
- show()和exec()的区别
- 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...
- jQuery基本过滤选择器
- 华为桌面小程序在哪里_小程序开发公司哪里强?看这几点
- LeetCode 68. Text Justification
- python数据分析numpy_Python数据分析之numpy学习(一)
- 【oracle】varchar和varchar2区别
- Web组件的三种关系
- 羊年祝福语(羊年祝福大全)
- Windows下Tensorflow-silm库使用遇到ImportError: No module named 'nets'问题的解决方法
- Windows下缺少Android licenses的奇怪路径问题
- 儿童学习桌有哪些升降方式
- TalkingData:未来10年是大数据价值变现的阶段
- 电脑经常蓝屏怎么解决
- linux空目录4kb,为什么 Linux 默认页大小是 4KB
- 中职 php学啥,中职技校电脑专业主要学什么
- 【优质潜力刊】Elsevier旗下1区SCI, 热门前沿领域,已稳定检索37年~
- Android 读取外设U盘(USB)文件。
热门文章
- 吊打面试官,笑对 2022 金三银四,2022年最全面试真题大汇总
- 中科大科学岛计算机复试,2020年中国科学技术大学研究生院科学岛分院复试办法及复试内容...
- 查看ubuntu系统的版本信息
- 微信演进的六点思考:微信生态如何演变?如何在其中掘金?
- U8 数据库服务器和应用服务器 分离后出现 登陆系统管理 远程组件初始化 失败 解决方案!
- php transfer-encoding: chunked,“Transfer-Encoding: chunked” header in PHP
- pandas如何处理列转行
- STM32串口输出字符串
- java 免登录_最简单、稳定的免密登录
- tcpdump(一)