简介

有时候我们需要使用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模拟按键与鼠标操作(一)相关推荐

  1. python模拟按键与鼠标操作(二)将复制内容粘贴至指定文本框中

    一.简介 我们在使用python模拟键盘鼠标时,经常需要传入一些变量在页面的文本框中,比如传入查询数据的日期,查询数据的选项等等,这时我们可以利用datatime生成时间,定义为一个变量,然后利用以下 ...

  2. python模拟按键_Python实现windows下模拟按键和鼠标点击的方法

    本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等. 前提先要安装 p ...

  3. python驱动级模拟按键_Python实现windows下模拟按键和鼠标点击的方法

    本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法.分享给大家供大家参考.具体如下: 这段代码可以模拟在窗口上按下按键.鼠标左键点击.鼠标右键点击.鼠标双击等等 # # _*_ c ...

  4. python模拟按键_python 模拟按键放在模拟器Python初学者的17个技巧

    Python初学者的17个技巧,有需要的朋友可以参考下. W WW.002pc .COM认为此文章对<python 模拟按键放在模拟器Python初学者的17个技巧>说的很在理. 交换变量 ...

  5. .net中模拟键盘和鼠标操作

    周银辉 其实SendKeys类提供的方法蛮好用的,可惜的是WPF中不能用了,说是WPF的消息循环方式改成了Dispatcher,所以直接调用System.Windows.Forms.SendKeys. ...

  6. windows 模拟按键与鼠标

    windows 模拟按键与鼠标 函数功能:模拟按键或鼠标.一次完整的按键由KEYEVENTF_KEYDOWN和KEYEVENTF_KEYUP两个子事件组成. 函数原型: VOID keybd_even ...

  7. 模拟键盘、鼠标操作或Windows hook 在部分软件失效的问题

    用户界面权限隔离(UIPI) 在Windows中的权限系统 除了在进程之间提供内核对象的访问保护,窗口系统还利用完整性级别来拒绝低完整性级别的进程访问/更新高完整性级别的进程的用户界面.这个机制称为用 ...

  8. python模拟按键包_今天玩点啥:利用python之PyUserInput实现模拟鼠标键盘操作,抢红包?聊天?自动下载?...

    一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...

  9. python模拟按键网游_Python实现windows下模拟按键和鼠标点击的方法

    转于博客 https://www.cnblogs.com/huidaoli/p/7398392.html,原作者:huidaoli # _*_ coding:UTF-8 _*_ import win3 ...

最新文章

  1. 如何复制一个目录里面的所有目录和文件
  2. 我看过且非常喜欢的《电影》和书
  3. show()和exec()的区别
  4. 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...
  5. jQuery基本过滤选择器
  6. 华为桌面小程序在哪里_小程序开发公司哪里强?看这几点
  7. LeetCode 68. Text Justification
  8. python数据分析numpy_Python数据分析之numpy学习(一)
  9. 【oracle】varchar和varchar2区别
  10. Web组件的三种关系
  11. 羊年祝福语(羊年祝福大全)
  12. Windows下Tensorflow-silm库使用遇到ImportError: No module named 'nets'问题的解决方法
  13. Windows下缺少Android licenses的奇怪路径问题
  14. 儿童学习桌有哪些升降方式
  15. TalkingData:未来10年是大数据价值变现的阶段
  16. 电脑经常蓝屏怎么解决
  17. linux空目录4kb,为什么 Linux 默认页大小是 4KB
  18. 中职 php学啥,中职技校电脑专业主要学什么
  19. 【优质潜力刊】Elsevier旗下1区SCI, 热门前沿领域,已稳定检索37年~
  20. Android 读取外设U盘(USB)文件。

热门文章

  1. 吊打面试官,笑对 2022 金三银四,2022年最全面试真题大汇总
  2. 中科大科学岛计算机复试,2020年中国科学技术大学研究生院科学岛分院复试办法及复试内容...
  3. 查看ubuntu系统的版本信息
  4. 微信演进的六点思考:微信生态如何演变?如何在其中掘金?
  5. U8 数据库服务器和应用服务器 分离后出现 登陆系统管理 远程组件初始化 失败 解决方案!
  6. php transfer-encoding: chunked,“Transfer-Encoding: chunked” header in PHP
  7. pandas如何处理列转行
  8. STM32串口输出字符串
  9. java 免登录_最简单、稳定的免密登录
  10. tcpdump(一)