当前位置: 首页 > 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')

相关文章:

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…...

计算机网络发展历史

定义和基本概念 计算机网络是由多个计算设备通过通信线路连接起来的集合,这些设备能够互相交换数据、消息和资源。计算机网络的核心功能是实现数据的远程传输和资源共享,它使得地理位置的限制被大大减弱,极大地促进了信息的自由流动和人类社…...

记录安装android studio踩的坑 win7系统

最近在一台新电脑上安装android studio,报了很多错误,也是费了大劲才解决,发出来大家一起避免一些问题,找到解决方法。 安装时一定要先安装jdk,cmd命令行用java -version查当前的版本,没有的话,先安装jdk,g…...

Python图形编程-PyGame快速入门

PyGame快速入门 文章目录 PyGame快速入门1、什么是PyGame2、安装PyGame3、创建PyGame窗口4、处理事件5、绘制对象6、移动对象7、加载和显示图像8、播放声音9、处理用户输入10、碰撞检测11、动画精灵12、管理游戏状态13、Pygame 中的典型主游戏循环1、什么是PyGame Pygame 是一…...

邦芒宝典:8种方法调整职场心态

在职场中拼斗当然要有好的心态,您知道职场心态如何调整吗? ​ ​方法1:自我调整 ​“思想可以使天堂变成地狱,也可以使地狱变成天堂。”你不能样样顺利,但可以事事尽心;你不能左右天气,但可以改变心情;你…...

华为OD2024D卷机试题汇总,含D量50%+,按算法分类刷题,事半功倍

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…...

Unity UGUI 之 Graphic Raycaster

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 首先手册连接如下: Unity - Manual: Graphic Raycaster 笔记来源于&#xff…...

类和对象——相关的零碎知识

前提提示: 其实C中的类和对象,最重要的是6个默认函数,如有忘记,请移步到:类和对象。本章是对于一些细节知识的补充和拓展。 1. 隐示类型转换 在运算时,运算符左右两边的操作数的类型不同,编译器…...

【hadoop大数据集群 1】

hadoop大数据集群 1 文章目录 hadoop大数据集群 1一、环境配置1.安装虚拟机2.换源3.安装工具4.安装JDK5.安装Hadoop 一、环境配置 折腾了一下午/(ㄒoㄒ)/~~ 1.安装虚拟机 参考视频:https://www.bilibili.com/video/BV18y4y1G7JA?p17&vd_sourcee15e83ac6b22a…...

TQSDRPI开发板教程:实现PL端的UDP回环与GPSDO

本教程将完成一个全面的UDP运行流程与GPSDO测试,从下载项目的源代码开始,通过编译过程,最终将项目部署到目标板卡上运行演示。此外,我们还介绍如何修改板卡的IP地址,以便更好地适应您的网络环境或项目需求。 首先从Gi…...

array.some() ==> 查找数组list中,是否有包含与当前currKey的值不一样的misId

需求: const list [ {misId: e, name: 小白}, {misId: e, name: 小白白}, {misId: r, name: 小王}, {misId: r, name: 小小王} ] let currKey r 查找数组list中,是否有包含与当前currKey的值不一样的misId 解决: 要查找数组lis…...

最简单的typora+gitee+picgo配置图床

typoragiteepicgo图床 你是否因为管理图片而感到头大?是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了,它们可以帮你轻松打造自己的图床,让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧! Typora …...

【黄啊码】GPT的相关名词解释

GPT是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型 GPT的核心技术是‌变换器(Transformer),这是一种神经网络结构,可以有效地处理序列数据,比如文本、语音、图像等。GPT使用了大量的预训练数据&#…...

git stash 命令详解

git stash 描述 git stash 命令用于将当前工作目录中的未提交更改(包括暂存区和工作区的更改)保存到一个栈中,并恢复工作目录到干净的 HEAD 状态。这样您可以在不提交当前更改的情况下,切换到其他分支或进行其他操作。后续可以通…...

txt格式单词导入有道词典生词本 (java代码方式)

txt格式单词导入有道词典生词本 (java代码方式) 首先要求txt文档里单词的格式,大概需要像这种: 每行是一个单词,格式为:英文单词空格词性单词意思。 注意 导出单词本的名字就是你 txt 文件的名字 我这里是 公共英语三级 单词本 …...

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数 3 算法仿真3.1 ROS C实现3.2 Python实现 0 专栏介绍 🔥课程设计、毕业设计、创新竞赛、学术研究必备!本专栏涉及更高阶的…...

深入浅出WebRTC—ALR

ALR(Application Limited Region)指的是网络传输过程中,由于应用层的限制(而非网络拥塞)导致带宽未被充分利用的情况。在这种情况下,应用层可能因为处理能力、手动配置或其他因素无法充分利用可用带宽&…...

BSV区块链技术现实应用原理解析

BSV区块链以其卓越的可扩展性、坚如磐石的安全性、极低的交易成本等特性,成为满足企业当下需求并为企业未来成功奠基铺路的理想技术。 BSV协会近期发布了一个题为《驾驭数字化转型:在自动化世界中建立信任——区块链在数据保护和交易优化中的角色》的报…...

七大基于比较的排序算法

目录 一、基于比较的排序算法概述 1. 插入排序(Insertion Sort) 2. 选择排序(Selection Sort) 3. 冒泡排序(Bubble Sort) 4. 归并排序(Merge Sort) 5. 快速排序(Qu…...

web前端 React 框架面试200题(四)

面试题 97. React 两种路由模式的区别?hash和history? 参考回答: 1: hash路由 hash模式是通过改变锚点(#)来更新页面URL,并不会触发页面重新加载,我们可以通过window.onhashchange监听到hash的改变,从而处…...

GB28181协议实战:WVP开源项目+ZLM流媒体服务联调配置详解

GB28181协议实战:WVP开源项目ZLM流媒体服务联调配置详解 在视频监控领域,GB28181协议作为国家标准协议,已经成为设备互联互通的重要基础。而将WVP(Web Video Platform)开源项目与ZLM(ZLMediaKit&#xff09…...

如何在3个步骤内完成Logisim-Evolution数字电路设计工具的安装配置

如何在3个步骤内完成Logisim-Evolution数字电路设计工具的安装配置 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution Logisim-Evolution是一款功能强大的数字逻辑电路设计和…...

【国家级等保2.0工业网关合规缺口】:3步完成Python网关安全基线加固(含GB/T 22239-2024映射表)

第一章:工业Python网关安全基线合规总览工业Python网关作为OT与IT融合的关键枢纽,承担着协议转换、数据采集、边缘计算与远程控制等核心职能。其安全基线合规性直接关系到生产系统的可用性、完整性与保密性。依据IEC 62443-3-3、等保2.0三级及NIST SP 80…...

利用Charles实现请求与响应的动态修改:从基础到实战

1. Charles工具简介与基础配置 Charles是一款功能强大的网络抓包工具,它就像是你手机和电脑之间的"透明玻璃",能让你清清楚楚地看到所有进出的网络请求。我第一次接触Charles是在调试一个电商APP的支付接口时,当时遇到一个诡异的bu…...

别再为付费教程头疼了!手把手教你用两块ESP32实现经典蓝牙通信(附完整代码)

零成本玩转ESP32蓝牙通信:从踩坑到实战的完整指南 在创客圈里流传着一句话:"每个物联网项目都是从点亮第一颗LED开始的。"而当我们想用两块ESP32开发板通过蓝牙控制这颗LED时,却常常陷入付费教程、失效代码和模糊文档的泥潭。本文将…...

leetcode 1504. Count Submatrices With All Ones 统计全 1 子矩形

Problem: 1504. Count Submatrices With All Ones 统计全 1 子矩形 计算矩阵的前缀和&#xff0c;然后遍历所有的子矩阵&#xff0c;看是否都是1也就是面积等于长乘以宽 都是1的矩阵&#xff0c;可以直接计算得到结果 Code class Solution { public:int numSubmat(vector<…...

用2万小时人类视频预训练机器人,一场豪赌还是必经之路?

先说结论核心验证了“人类数据缩放定律”&#xff1a;在灵巧操作任务上&#xff0c;模型性能随人类预训练数据量对数线性增长&#xff0c;为数据策略提供了可预测的依据。成功的关键在于“两阶段迁移”设计&#xff1a;用大规模、廉价但“嘈杂”的人类数据奠基通用结构&#xf…...

给视觉新手的保姆级教程:用Python+OpenCV玩转四步相移结构光(附代码)

零基础实战&#xff1a;用PythonOpenCV实现四步相移结构光三维重建 在计算机视觉领域&#xff0c;结构光三维重建技术因其高精度和非接触特性&#xff0c;被广泛应用于工业检测、逆向工程和医疗成像。对于刚接触这一领域的新手来说&#xff0c;最困扰的往往不是理解原理&#x…...

从猫狗识别到工业质检:深入理解PyTorch中的sample_weight,让模型更‘关注’关键样本

从猫狗识别到工业质检&#xff1a;深入理解PyTorch中的sample_weight&#xff0c;让模型更‘关注’关键样本 在工业质检和医疗影像分析中&#xff0c;某些样本的误判代价可能比其他样本高出一个数量级。想象一下&#xff0c;在半导体缺陷检测中漏判一个微小裂纹&#xff0c;或在…...

实战演练:基于快马平台仿claude code开发可拖拽任务管理看板应用

今天想和大家分享一个实战项目&#xff1a;基于InsCode(快马)平台开发一个可拖拽的任务管理看板应用。这个项目模拟了类似claude code处理复杂场景的能力&#xff0c;特别适合需要快速验证产品可行性的场景。 项目背景与需求分析 任务管理看板是团队协作中非常实用的工具。我们…...