python可以直接调用win32的api吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python可以直接调用win32的api吗相关的知识,希望对你有一定的参考价值。
1、说明
python可以调用win32的Api,是使用ctypes模块就可以调用win32的API函数。
2、示例代码
import ctypes
MessageBox = ctypes.windll.user32.MessageBoxW
MessageBox(None, \'我是python,我使用了win32 API :)\', \'提示\', 0)
3、执行结果
4、注意事项
要注意函数使用的参数,如果使用了带中文的字符串,就是使用api中Unicode的函数,如上例中使用的MessageBoxW,如为纯ANSI编码字符串则直接使用MessageBox即可。
使用中如果出现ImportError: No module named win32api 或者出现 ImportError: No module named win32con,说明你的库没有安装好。
介绍这个库里面最重要的两个模块:win32api和win32con。win32api顾名思义,就是用python对win32的本地api进行了封装;win32con个人理解为win32constant,即win32的常量定义。本回答被提问者采纳
我可以在没有 C++(只有 C)的情况下学习 Win32 API 吗?
【中文标题】我可以在没有 C++(只有 C)的情况下学习 Win32 API 吗?【英文标题】:Can I learn the Win32 API without C++ (with only C)? 【发布时间】:2019-10-09 07:27:12 【问题描述】:对于这个问题提出一个奇怪的问题,我很抱歉。我用谷歌搜索并在这里寻找解决方案,但没有一个答案能满足我真正想要的。
我真的对这个问题感到困惑。我学习安全工作已经快 2 年了。所以,我对 Python 和 C 有很好的了解。
我推荐的公司给了我学习 Win32 的建议。但是当我开始了解它时,我发现Win32 是基于 C++ 的。但我不想再浪费时间去研究它了。一些博客谈论 C/C++ 中的 Windows 编程,这让我更加困惑,因为我认为 C 和 C++ 本质上是相互独立的。
我的问题是:
我可以只用 C 来学习 Win32 吗?
如果不是,那我可以通过 C 来学习吗?
如果是,我必须走多远(所以,它的所有上下文或具体情况)?
再次抱歉。我现在真的很困惑,我不知道我必须做什么。
【问题讨论】:
大多数 Win Api 是 C。有几个例外(例如 COM IFAIR)。 但几乎 MSDN 中的每个代码都说 C++.. @MarekR 所有的 COM API 都是 C 兼容的。 C/C++ 几乎不是分开的,C 可以被视为 C++ 的一个子集,而存在的差异是标准化委员会做得不好的结果。 “不想再浪费时间学习它” - 但是在 C 之后切换到 C++ 是必须的。 @VTT 说 C 的一半功能在 C++ 中不存在或工作方式不同,所以 C 绝对不是 C++ 的子集。 【参考方案1】:据我所知 - 是的,这应该是可能的。较旧的 Windows API 实际上是基于 C 的,这就是我 20 年前自己学到的。他们很简单。较新的基于 COM,这在 C 中有点麻烦,但绝不是不可能的。我记得读过一些关于这样做的好教程(C 语言中的 COM),尽管恐怕我没有任何方便的链接可以提供。
也就是说,C 和 C++ 非常接近。事实上,C++ 最初旨在成为 C 的超集——每个有效的 C 程序都应该是有效的 C++ 程序。现在,他们并没有完全做到这一点,但差异是微妙的,在大多数情况下不应该打扰你。因此,您不妨继续用 C 编写代码,只使用一点 C++ 来与 COM 交互。 C++ 编译器应该接受这个就好了。
【讨论】:
这不是问题链接,我想我的主要问题是我可以用 C 来学习它。而 MSDN 中的代码说 C++ 可以用 C 编译器编译? C 和 C++ 密切相关。大多数 C 程序都可以编译为 C++,几乎不需要更改。以上是关于python可以直接调用win32的api吗的主要内容,如果未能解决你的问题,请参考以下文章