论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Oracle
›
【Win】感觉“ctypes.WinDLL(“user32“)“跟“ctypes.w ...
【Win】感觉“ctypes.WinDLL(“user32“)“跟“ctypes.windll.user32“看起 ...
雁过留声
金牌会员
|
2025-1-2 05:09:29
|
显示全部楼层
|
阅读模式
楼主
主题
969
|
帖子
969
|
积分
2907
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Gemini-2.0-Flash-Experimental
好的,我来用更适合你的方式表明一下 ctypes.WinDLL("user32") 和 ctypes.windll.user32 之间的区别,尤其是在 Windows 情况下:
核心概念:动态链接库(DLL)
在 Windows 系统中,很多功能(例如窗口管理、用户输入等)都封装在名为动态链接库(Dynamic Link Library,简称 DLL)的文件中。user32.dll 就是一个很告急的 DLL,它包罗了很多与用户界面相关的函数。
ctypes 模块的作用:
Python 的 ctypes 模块答应你直接调用这些 DLL 中的函数,就像调用 Python 函数一样。这使得 Python 步伐可以使用 Windows 系统提供的底层功能。
ctypes.windll.user32:
ctypes.windll: 这部分表示你想要加载一个使用标准 Windows 调用约定的 DLL。这种约定是 Windows 系统默认的,叫做 stdcall。
user32: 这部分是 user32.dll 的名字,ctypes 会根据这个名字找到对应的 DLL 文件并加载。
问题:
ctypes.windll.user32 是一个
共享的对象
,在整个 Python 步伐中是唯一的。如果一个库(例如 pynput)修改了这个对象中函数的范例界说,会影响到所有使用 ctypes.windll.user32 的代码。
ctypes.WinDLL("user32"):
ctypes.WinDLL("user32"): 这部分表示你想要加载 user32.dll,但不是通过共享的方式。每次调用这个,它会创建一个新的 user32.dll 实例。
优势:
这会创建一个独立的 user32.dll 实例,这意味着如果你修改了此实例中函数的范例界说,不会影响到其他地方。
用生活中的例子来比喻:
假设你和你的朋侪合用一个公共的图书馆(ctypes.windll.user32),这个图书馆里的书(DLL中的函数)都是共享的。如果你在书上做了标志(修改了范例界说),那么你的朋侪看到这本书时,也会看到你的标志。
而 ctypes.WinDLL("user32") 就像是你本身有一个专属的图书馆,内里的书(DLL中的函数)是独立的。你在本身的书上做什么标志,都不会影响到别人的书。
总结:
特性ctypes.windll.user32ctypes.WinDLL("user32")
实例
共享实例独立实例
修改影响
修改会影响所有地方修改只影响当前实例
实用场景
常规调用 Windows API避免范例辩说,需要独立控制
对于你来说:
如果你只是简单地使用 ctypes 调用 Windows API,通常用 ctypes.windll.user32 就够了。
但是如果你需要使用 pynput 这样的库,它可能会修改 user32.dll 的范例界说,为了避免辩说,你应该使用 ctypes.WinDLL("user32") 创建一个独立的 user32.dll 实例。
希望这个表明能资助你理解它们之间的区别!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
雁过留声
金牌会员
这个人很懒什么都没写!
楼主热帖
XShell免费版的安装配置教程以及使用教 ...
阿里云体验有奖:如何将 PolarDB-X 与 ...
day02-代码实现01
【如何优化她】教你如何定位不合理的SQ ...
微服务大行其道的今天,Service Mesh是 ...
十年技术进阶路,让我明白了三件要事( ...
常用类-LocalDate、LocalTime、LocalDa ...
无需支付688苹果开发者账号,xcode13打 ...
鸿蒙3.0来了,这次,我真的想批评鸿蒙 ...
Elasticsearch 入门实战(5)--Java API ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
程序人生
SQL-Server
DevOps与敏捷开发
Nosql
快速回复
返回顶部
返回列表