当前位置: 首页 > news >正文

python键盘操作工具:ctypes、pyautogui

这里模拟 Win + Ctrl + L 组合键

1、ctypes

ctypes库,它允许我们直接调用Windows API来模拟键盘输入。

import ctypes
import time# 定义所需的常量和结构
LONG = ctypes.c_long
DWORD = ctypes.c_ulong
ULONG_PTR = ctypes.POINTER(DWORD)
WORD = ctypes.c_ushortclass MOUSEINPUT(ctypes.Structure):_fields_ = (("dx", LONG),("dy", LONG),("mouseData", DWORD),("dwFlags", DWORD),("time", DWORD),("dwExtraInfo", ULONG_PTR))class KEYBDINPUT(ctypes.Structure):_fields_ = (("wVk", WORD),("wScan", WORD),("dwFlags", DWORD),("time", DWORD),("dwExtraInfo", ULONG_PTR))class HARDWAREINPUT(ctypes.Structure):_fields_ = (("uMsg", DWORD),("wParamL", WORD),("wParamH", WORD))class INPUT(ctypes.Structure):class _INPUT(ctypes.Union):_fields_ = (("ki", KEYBDINPUT),("mi", MOUSEINPUT),("hi", HARDWAREINPUT))_anonymous_ = ("_input",)_fields_ = (("type", DWORD),("_input", _INPUT))# 定义按键代码
VK_LWIN = 0x5B
VK_CONTROL = 0x11
VK_L = 0x4C# 定义SendInput函数
SendInput = ctypes.windll.user32.SendInput
SendInput.restype = ctypes.c_uint
SendInput.argtypes = [ctypes.c_uint, ctypes.POINTER(INPUT), ctypes.c_int]# 创建INPUT结构
def create_input(vk, press):return INPUT(type=1, ki=KEYBDINPUT(wVk=vk, wScan=0, dwFlags=0x0002 if not press else 0))# 发送按键
def send_key_combo(keys):inputs = [create_input(key, True) for key in keys]inputs += [create_input(key, False) for key in reversed(keys)]n_inputs = len(inputs)array_type = INPUT * n_inputsc_inputs = array_type(*inputs)SendInput(n_inputs, c_inputs, ctypes.sizeof(INPUT))# 等待5秒,确保系统已完全启动
time.sleep(5)# 发送 Win + Ctrl + L 组合键
send_key_combo([VK_LWIN, VK_CONTROL, VK_L])

2、pyautogui

https://www.jianshu.com/p/3f5d0252f4a3
pyautogui库是一种用于自动化任务的强大工具,它可以模拟鼠标和键盘操作,执行各种GUI任务。无论是进行屏幕截图、自动填写表单、自动化测试还是进行GUI操作,pyautogui都可以派上用场。

安装

pip install pyautogui

代码

import pyautogui
import time# 确保 pyautogui 库已安装
# 如果没有安装,可以使用以下命令进行安装:
# pip install pyautogui# 为了确保按键按下的顺序正确,可以稍微延迟一下
time.sleep(2)# 按下 Win 键
pyautogui.keyDown('win')# 按下 Ctrl 键
pyautogui.keyDown('ctrl')# 按下 L 键
pyautogui.keyDown('l')# 释放 L 键
pyautogui.keyUp('l')# 释放 Ctrl 键
pyautogui.keyUp('ctrl')# 释放 Win 键
pyautogui.keyUp('win')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ajax学习笔记
  • ARM功耗管理之功耗和安全
  • 51单片机嵌入式开发:16、STC89C52RC 嵌入式之 步进电机28BYJ48、四拍八拍操作
  • 下拉菜单过渡
  • 算法017:二分查找
  • 【MySQL-17】存储过程-[变量篇]详解-(系统变量&用户定义变量&局部变量)
  • 基于chrome插件的企业应用
  • Spark内核的设计原理
  • 1.1 OpenCV __ Introduction
  • 【Drone】drone编译web端 防墙策略 | 如何在被墙的状态drone顺利编译npm
  • Air780EP-AT开发-HTTP应用指南
  • RabbitMQ的学习和模拟实现|sqlite轻量级数据库的介绍和简单使用
  • Zabbix监控系统:zabbix服务部署+基于Proxy分布式部署+zabbix主动与被动监控模式
  • 在Linux、Windows和macOS上释放IP地址并重新获取新IP地址的方法
  • 探索Mojo模型的超参数优化:自定义搜索策略全解析
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017年终总结、随想
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • C学习-枚举(九)
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6--对象的扩展
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript学习总结——原型
  • Java程序员幽默爆笑锦集
  • Linux CTF 逆向入门
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 记录一下第一次使用npm
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • Semaphore
  • ​2020 年大前端技术趋势解读
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $.ajax()参数及用法
  • (2)Java 简介
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (javascript)再说document.body.scrollTop的使用问题
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (void) (_x == _y)的作用
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (第一天)包装对象、作用域、创建对象
  • (二十三)Flask之高频面试点
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (蓝桥杯每日一题)love
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (小白学Java)Java简介和基本配置
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原创)可支持最大高度的NestedScrollView
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .net 4.0发布后不能正常显示图片问题
  • .Net 6.0--通用帮助类--FileHelper
  • .NET Core 成都线下面基会拉开序幕