Python 模块之 Pywin32 模块入门

文章目录

  • 版本
  • 1. Windows API 是什么
  • 2. Pywin32 模块是什么
    • 2.1 Pywin32 中的常用模块
      • 2.1.1 win32api
      • 2.1.2 win32con
      • 2.1.3 win32gui
      • 2.1.4 win32file
      • 2.1.5 win32registry
    • 实现一个循环模拟点击功能
  • 其它
  • 总结
  • 个人简介

版本

  • Python 3.x

1. Windows API 是什么

  • Windows API(Application Programming Interface)是微软为Windows操作系统提供的一套编程接口。它包含大量的函数、数据结构和常量,允许开发者与Windows操作系统进行交互。例如,Windows API可以用来处理文件系统、图形用户界面(GUI)、进程和线程、注册表、网络等方面的任务。

2. Pywin32 模块是什么

  • pywin32 是一个用于访问Windows API的Python库。它封装了Windows API,使得Python程序可以调用这些API函数,从而与Windows操作系统进行各种交互。通过pywin32,你可以进行诸如窗口管理、文件操作、注册表访问、系统信息获取等操作。

2.1 Pywin32 中的常用模块

pywin32 包含多个子模块,每个子模块封装了特定的Windows API功能。以下是一些常用模块的介绍及其使用示例。

2.1.1 win32api

  • win32api 提供了对基本Windows API函数的访问,如文件操作、系统信息、消息框等。

  • 示例:获取系统信息

import win32api# 获取系统时间
system_time = win32api.GetSystemTime()
print("System Time:", system_time)# 显示一个消息框
win32api.MessageBox(0, 'Hello, World!', 'Message', 0x00001000)

2.1.2 win32con

  • win32con 包含了许多Windows API所需的常量,如窗口样式、消息框类型、键盘和鼠标事件等。

  • 示例:使用常量

import win32api
import win32con# 获取屏幕分辨率
width = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)
print(f"Screen resolution: {width}x{height}")

2.1.3 win32gui

  • win32gui 提供了对Windows GUI(图形用户界面)组件的访问和控制,如窗口操作、菜单、绘图等。

  • 示例:列出所有窗口标题

import win32guidef enum_window_titles(hwnd, titles):if win32gui.IsWindowVisible(hwnd):titles.append(win32gui.GetWindowText(hwnd))titles = []
win32gui.EnumWindows(enum_window_titles, titles)
print("Window Titles:", titles)

2.1.4 win32file

  • win32file 提供了对文件和目录操作的访问,如创建、读取、写入文件等。

  • 示例:文件操作

import win32file# 创建一个文件
handle = win32file.CreateFile('example.txt',win32file.GENERIC_WRITE,0,None,win32file.CREATE_ALWAYS,0,None
)# 写入文件
win32file.WriteFile(handle, b'Hello, World!')# 关闭文件
win32file.CloseHandle(handle)

2.1.5 win32registry

  • win32registry 提供了对Windows注册表的访问。

  • 示例:读取注册表键值

import win32api
import win32conkey = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer')
value, regtype = win32api.RegQueryValueEx(key, 'ShellState')
print("Registry Value:", value)
win32api.RegCloseKey(key)

实现一个循环模拟点击功能

  • 读取配置文件中的点击间隔时间和点击坐标,然后按配置进行自动点击操作。每次点击后,会等待配置文件中指定的秒数。
import time
import win32api
import win32condef read_config(file_path):with open(file_path, 'r') as file:lines = file.readlines()# 第一行是点击间隔时间(秒)interval = float(lines[0].strip())# 后面的每一行是点击坐标coordinates = []for line in lines[1:]:x, y = map(int, line.strip().split(','))coordinates.append((x, y))return interval, coordinatesdef click(x, y):# 将鼠标移动到指定位置win32api.SetCursorPos((x, y))# 按下鼠标左键win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)# 释放鼠标左键win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)def main():# 读取配置文件interval, coordinates = read_config('config.txt')print(f"Click interval: {interval} seconds")print("Coordinates:")for coord in coordinates:print(coord)# 循环点击while True:for (x, y) in coordinates:click(x, y)time.sleep(interval)if __name__ == "__main__":main()
  • 配置文件 config.txt
2
100,200
150,250
300,400
  • 代码解释
1、read_config(file_path):读取配置文件并解析点击间隔时间和点击坐标。
2、click(x, y):将鼠标移动到指定位置并执行点击操作。
3、main():读取配置文件,打印配置信息,然后循环遍历点击坐标并进行点击操作,点击后等待指定的间隔时间。

其它

  • 模拟点击运行报错:pywintypes.error: (0, ‘SetCursorPos‘, ‘No error message is available‘)
  • 解决方案:使用管理员权限运行

总结

  • pywin32 模块是一个强大的工具,使Python开发者可以轻松访问和操作 Windows API。通过 pywin32,你可以执行各种系统级任务,如窗口管理、文件操作、注册表访问、系统信息获取等。了解并熟练使用 pywin32 可以显著提升你在 Windows 平台上的开发能力。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂阻塞赋值和非阻塞赋值

目录 2.非阻塞赋值举例3.阻塞赋值举例4.总结 微信公众号获取更多FPGA相关源码: # 1.阻塞赋值和非阻塞赋值的区别: (1)阻塞赋值"",必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号…

MyBatis与MySql关系阐述

MyBatis是一个持久层(persistence layer)框架,用于简化Java应用程序与关系数据库(如MySQL)的交互。它通过消除大量冗余的JDBC代码,并提供了一个简单且易于使用的API,使得开发者可以更高效地进行…

pytest+requests+allure自动化测试接入Jenkins学习

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 最近在这整理知识,发现在pytest的知识文档缺少系统性,这里整理一下&…

black-box setting黑盒环境

“Black-box setting” 是一个术语,通常用于描述在机器学习、计算机安全和其他技术领域中的一种情况或设置。 定义和解释: 在技术和研究上,“black-box setting” 指的是对一个系统或模型的操作者来说,该系统或模型的内部工作机…

陕西移动联合中兴通讯,赋能5G RedCap智慧工厂建设

前不久,陕西移动联合中兴通讯、高新兴等产业伙伴在中兴通讯西安智能终端生产基地顺利完成5G RedCap在智慧工厂的应用实践。本次实践证明了5G RedCap在智慧工厂场景下的应用可行性,为RedCap在工业智能制造行业的应用打下基础。   5G RedCap技术是5G-A实现…

【cocos creator 3.x】 修改builtin-unlit 加了一个类似流光显示的mask参数

效果见图: shader 代码修改如下, 主要看 USE_MASK_UVY 关键字部分修改: // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{techniques:- name: opaquepasses:- vert: unlit-vs:vertfrag: unlit-fs:fragproperties: &a…

在Android Studio中将某个文件移出Git版本管理

最新在整理代码时发现,local.properties文件开头有这么一段注释: ## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. 大意是这个文件不要加入到版本管理中。 之…

Linux-centos7 nvm使用

NVM下载使用 文件夹创建拉取nvm包在~/.bashrc的末尾,添加如下语句验证nvm是否安装成功 文件夹创建 mkdir /root/home/software/拉取nvm包 cd /root/home/software/ wget https://github.com/nvm-sh/nvm/archive/refs/tags/v0.38.0.tar.gz tar xvzf v0.38.0.tar.g…

MyBatis-Plus整合达梦数据库

文章目录 1. 环境准备2. 创建Spring Boot项目3. 引入依赖4. 配置数据源5. 配置MyBatis-Plus6. 创建实体类7. 创建Mapper接口8. 创建Service类9. 创建Controller类10. 创建Mapper XML文件11. 测试12. 进一步优化12.1 配置分页插件12.2 配置乐观锁插件13. 总结🎉欢迎来到Java学…

【Linux】常见指令的使用

文章目录 which指令stat 指令wc指令echo指令tree 指令whoami指令clear指令alias指令ls指令pwd指令cd 指令touch指令mkdir指令(重要)rmdir指令 && rm 指令(重要)man指令(重要)cp指令(重要…

Java课程设计:基于swing的贪吃蛇小游戏

文章目录 一、项目介绍二、核心代码三、项目展示四、源码获取 一、项目介绍 贪吃蛇是一款经典的休闲益智游戏,自问世以来便深受广大用户的喜爱。这个游戏的基本玩法是控制一条不断增长的蛇,目标是吃掉屏幕上出现的食物,同时避免撞到边缘或自身。随着游戏的进行,蛇的身体会越长…

使用Task容易造成程序卡顿

Task虽然方便,据说在多核处理器中有利于提高程序性能。但是使用过程中总是出现莫名奇妙的卡顿,特别是计算机性能不高的时候。多个task偶尔会出现卡顿比较长的时间,才开始执行。不像thread可以立马开始执行。已经在两个项目中遇到类似问题&…

Burp Suite使用及BruteForc_test靶场实战

简介 Burp Suite是用于攻击和测试Web应用程序安全性的集成平台,包含多个协同工作的工具,支持信息共享与复杂攻击。设计有加速攻击流程的接口,所有工具共享强大框架,处理HTTP消息、持久性、认证、代理、日志和警报。主要用于安全性…

grpc代理服务的实现(一)

最近公司需要无感知基于服务代号来实现通信, 并监控和管理通信连接,目前公司使用的是如下的逻辑(当然逻辑简化了,但是思想不变) 目录 简单的原理图代理服务的实现创建 tls tcp 服务, 用于grpc client 和 grpc service 通信保存 与 代理服务建立的 grpc …

Codeforces Round 926 (Div. 2)(A~C题解)

A题是个签到题,BC思维题目,搞出来结论就秒了,D题是个树上DP由于现在水平薄弱还没做出来,以后补上 A. Sasha and the Beautiful Array 思路给数组排序,然后后项减前项,累加值就是最终结果,签到题…

AI 大模型的赛点:通用与垂直之争

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

短视频矩阵源码---矩阵托管1000个账号如何正规开发规则实现

一、短视频矩阵源码开发实现规则: 1.首先是确保各个官方平台api接口的稳定性,一定要是各个平台正规的api 2.其次是保证服务器运行,带宽保证能够并行,目前我们这边用的是源码所需服务器配置:规格:最低8核16G2、硬盘:系…

GIS之arcgis系列10:arcpy实现批量掩膜提取

按掩膜提取 (Spatial Analyst) 提取掩膜所定义区域内的相应栅格像元。 OutRas ExtractByMask(InRas1, InMsk1, "INSIDE") 使用情况 输入栅格中的其他属性(若有的话)将按照原样添加到输出栅格属性表。 根据所记录的属性,某些属性…

【NLP练习】Transformer中的位置编码

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是位置编码 1. 位置编码定义 Transformer 模型中的位置编码是为了在处理序列数据时引入位置信息,以便模型能够分辨输入序列中不同位置的词…

【python】正则匹配国内手机号

下面是将您提供的Java代码段翻译成Python的等效代码: import re def is_valid_phone_number(phone_number):regex "^1[3-9]\d{9}$"return bool(re.match(regex, phone_number))这段Python代码定义了一个函数is_valid_phone_number,它接受一个…