首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python之模拟键盘

python之模拟键盘

作者头像
sjw1998
发布于 2019-09-28 05:12:49
发布于 2019-09-28 05:12:49
5.6K00
代码可运行
举报
文章被收录于专栏:孤独的S孤独的S
运行总次数:0
代码可运行

对于python来说,模拟键盘的方式据我了解有三种方式,其中有pyuserinput,win32api,以及winio。

其中第一种可以应用普通的程序或者桌面的键盘输入,第二和第三则是比较接近底层的模拟键盘,如果想做游戏的脚本便可以用第二和第三种,顺便一提第三种只使用圆孔的ps/2的键盘,第二种win32api亲测可以用于制作模拟dnf键盘移动的脚本。

Pyuserinput

要使用Pysuerinput之前需要一些准备,安装好相关的库,先安装pywin32,以及pyHook,然后再安装pyuserinput

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pymouse,pykeyboard,os,sys
from pymouse import *
from pykeyboard import PyKeyboard

m = PyMouse()
k = PyKeyboard()
#鼠标操作:
m.click(x,y,button,n) #鼠标点击
#x,y –是坐标位置
#buttong –  1表示左键,2表示点击右键
#n –  点击次数,默认是1次,2表示双击
m.move(x,y) #–鼠标移动到坐标(x,y)
x_dim, y_dim = m.screen_size() #–获得屏幕尺寸
#键盘操作:
k.type_string(‘Hello, Python!)# –模拟键盘输入字符串
k.press_key(A) #–模拟键盘按A键
k.release_key(A)# –模拟键盘松开A键
k.tap_key(B) #–模拟点击B键
k.tap_key(H,n=2,interval=5)#–模拟点击H键,2次,每次间隔5秒
k.tap_key(k.function_keys[5]) #–点击功能键F5
k.tap_key(k.numpad_keys[5],3) #–点击小键盘5,3次
#联合按键模拟
#例如同时按alt+tab键盘
k.press_key(k.alt_key)# –按住alt键
k.tap_key(k.tab_key) #–点击tab键
k.release_key(k.alt_key)# –松开alt键

以上便是有关Pysuerinput的相关操作,并不是很难理解,一些方法也相当方便我们使用。

win32api:

准备:安装好pywin32,pip insatall pywin32

然后使用时

import win32api

import win32con #导入这两个模块

import time #导入时间模块要有中断时间

import ctypes

以下是我自己的模拟按键按下抬起的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def keydownup(num):
    MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA
    time.sleep(0.4)
    win32api.keybd_event(num, MapVirtualKey(num, 0), 0, 0)
    time.sleep(0.2)
    win32api.keybd_event(num, MapVirtualKey(num, 0), win32con.KEYEVENTF_KEYUP, 0)

其中MapVirtualkey是扫描码,一般不使用这个,如果要制作控制游戏人物的脚本时一定要填入扫描码才能在游戏中实现硬件级键盘模拟。

方法很简单

win32api.keybd_event(虚拟码,扫描码,0,0)

第一个参数是虚拟码有一些是不太一样的,需要自己根据自己的电脑测出相关的虚拟码,其中一些虚拟码,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
left_arrow = 0x61
up_arrow = 0x65
right_arrow = 0x63
down_arrow = 0x62
a = 0x41
d = 0x44
x = 0x58

第二个参数是扫描码,如果一个一个去寻找扫描码会很麻烦,可以像我那样,在方法开始处或者程序起始处添加这么一句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MapVirtualKey = ctypes.windll.user32.MapVirtualKeyA

然后就可以传入虚拟码来寻找相应的扫描码

第三个是参数是作为判断按下与抬起的标识,按下时为0即可,因为键盘的全过程是按下与抬起,所有两个keybd_event才是一个完整的过程,其中一定要给其中添加一个时间暂停的,不然还是无法使用,即使在操作台或者pycharm上可以输入,在游戏中便没有效果了,时间自己可以传参数进去,也可以规定一个固定的值,这个时间便是你按住的时间

第四个参数直接为0即可

最重要的一点,如果要在游戏中使用,一定要以管理员的权限运行脚本,这样才可以使用。

winio:

这是一个调用第三方的库来模拟硬件级模拟键盘,由于我使用win32api已经做到了相关的要求,所有没有详细去了解。由于现在的键盘都是usb口,所有winio的不是很方便,有点受限硬件。

---------------人生苦短,我用python

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孤独的S 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python win32api中文手册_python 模拟鼠标和键盘输入
# FindWindow(lpClassName=None, lpWindowName=None) 窗口类名 窗口标题名
全栈程序员站长
2022/11/07
7K0
网银安全控件问题
网银的密码输入控件是通过直接读键盘设备IO获取的输入。需要使用驱动级的键盘模拟输入技术才能输进去。
周小董
2019/03/25
3K0
网银安全控件问题
【QQ/微信个人号变身机器人】炸群+远程监控个人PC的尝试
最近简直惰怠。公众号的粉丝都开始负增长了。 其实一直没有闲着,只不过没写成文字。大家可以在优酷关注我的账号:不二小段,我会把日常一些探索录屏给大家。 今天来简单谈谈有关QQ机器人和微信机器人一些玩法。视频已经录过了,所以我就不写太详细了。 目录的话大概是 →做个QQ机器人扔群里和小冰炸群 →使用QQ消息控制自己电脑的网易云音乐 →微信个人号变身机器人 关键词:QQ/微信机器人;Python模拟鼠标、键盘输入;Python调用系统命令 环境:Windows、Python 3.5、网易云音乐桌面版 库:qqbo
不二小段
2018/04/08
4.2K0
【QQ/微信个人号变身机器人】炸群+远程监控个人PC的尝试
Python PyWin32 模块
Python的生产效率极高,通过使用pypiwin32模块可以快速调用windows API函数,结合Python的高效开发能力,同等时间内比C++能更快的达到目标,pypiwin32模块封装了Win32下的常用定义,函数方法等。
王 瑞
2022/12/28
2.4K0
Python PyWin32 模块
[PyUserInput]模拟鼠标和键盘模拟
http://www.lfd.uci.edu/~gohlke/pythonlibs/
周小董
2019/03/25
3.6K0
Python 通过api操控鼠标键盘
Pymouse 标签: python ---- PyMouse http://blog.sina.com.cn/s/blog_60b45f230101kucn.html [python-sendkeys 模拟键盘事件的模块](http://blog.csdn.net/fangkailove/article/details/7614492) - 导入需要的包 ``` import win32api import win32con import win32gui from ctype
py3study
2020/01/07
1.3K0
selenium保存静态网页
用到的工具有chromedriver,pywin32和selenium。chromedriver安装配置过程自行百度,需要注意的是chromedriver和chrome的版本号需要一一对应,否则会出现不必要的报错。
周小董
2019/03/25
3.4K0
Python 实现指定窗口置顶激活
通过Python实现对特定窗口的置顶操作以及对特定窗体发送按键,这里需要安装一个第三方pip包,执行命令pywin32安装好以后,我们运行试试。
王 瑞
2022/12/28
2.9K0
python模拟键盘输入_python控制鼠标键盘
该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo)
全栈程序员站长
2022/11/18
2.1K0
Python制作回合制手游外挂简单教程(
会发现鼠标瞬间移动到坐标(1,1)的位置,我的电脑是1920*1080的,最右下角的坐标就是(1920,1080)。
py3study
2020/01/19
3.3K0
Python制作回合制手游外挂简单教程(
换个姿势「模拟登录」
今天老肥给大家介绍Python一个非常有意思的库PyUserInput,它集成了PyMouse和PyKeyboard这俩模块,能够模拟鼠标和键盘的操作,可以说是轻量级的按键精灵。
老肥码码码
2020/02/26
1.4K0
换个姿势「模拟登录」
python知识点100篇系列(13)-几种方法让你的电脑一直在工作
这里文章说的电脑一直在工作,是指使用python自动操作鼠标或键盘来使得电脑一直不息屏;
JQ实验室
2024/09/28
1990
Python模拟键盘输入和鼠标操作
一、Python键盘输入模拟: import win32api import win32con win32api.keybd_event(17,0,0,0)  #ctrl键位码是17 win32api.keybd_event(86,0,0,0)  #v键位码是86 win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0) 附个键位码表:
用户7705674
2021/11/01
1.5K0
Pywinauto之Windows UI自动化7
最近公司开发了一款基于PC端的桌面应用程序,需要进行自动化测试,避免重复的点工。为此,也在网上找了一些资料,都不符合当前需求,最终决定参考网上资料,使用python语言去实现。
用户6367961
2021/08/12
2.2K0
python win32api教程_解放双手——python win32api 入门「建议收藏」
put(str=”,flag=0):flag默认为0,则表示输入的字符串,为1:字符要表示的是快捷组合按键,快捷键要用空格分开
全栈程序员站长
2022/11/10
1.9K0
【centos】体验系统优化暨虚拟机加速服务
一、安装httpd 二、安装php 三、安装mysql 四、下载相应页面 wget --no-check-certificate http://www.heanny.cn 或者ctrl+s保存网页 from selenium import webdriver from pymouse import PyMouse from pykeyboard import PyKeyboard from pyexcel_xls import get_data import time,os from bs4 import 
一朵灼灼华
2022/08/05
2520
用python代码模拟键盘输入
今天在写代码时遇到一种情况,代码只能通过外部操作来判断,这时我就想到用python的代码来模拟一个键盘输入的值。
py3study
2020/01/07
2.3K0
selenium+python自动化99--文件下载弹窗处理(PyKeyboard)
在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果。 之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的。 最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserInput,详细安装教程地址Selenium+python自动化84-python3.6用PyUserInput
上海-悠悠
2018/09/29
2.4K0
selenium+python自动化99--文件下载弹窗处理(PyKeyboard)
Python3.4 模拟键盘输入
A   65       0   96        F1   112     Backspace    8       B   66       1   97        F2   113     Tab       9
用户8983410
2021/11/03
1.7K0
Python在windows下模拟按键和鼠标点击代码
这段代码可以模拟在窗口上按下按键、鼠标左键点击、鼠标右键点击、鼠标双击等等 # * coding:UTF-8 * import win32api import win32con import win32gui from ctypes import * import time VK_CODE = { 'backspace':0x08, 'tab':0x09, 'clear':0x0C, 'enter':0x0D, 'shift':0x10, 'ctrl':0x1
用户8983410
2021/11/03
1.9K0
相关推荐
python win32api中文手册_python 模拟鼠标和键盘输入
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档