如何使用Python学习Windows API?

24

我在Windows软件开发方面经验非常少,而且从未使用过Windows API,但我对Python相当熟悉。我应该如何学习使用Python来调用Windows API?

12个回答

42

12
Petzold的书仍然是经典参考资料。 - Eli Bendersky
1
两个链接目前都失效了。维基链接仍然有效。 - Steve Byrne
看起来现在有适用于Windows的Python版本了:https://docs.python.org/3/using/windows.html我不知道最新的Windows API书籍是什么。 - Charlie Martin
你能告诉我查理·佩兹尔德的书的ISBN吗?不一定是最新版,但我怀疑你所指的是这本书在亚马逊上的版本(ISBN-10:157231995X)出版于1998年,看起来并不重达15磅... - Armen Michaeli
第六版似乎是最新的,显然只适用于Kindle,所以我敢肯定它不再重达15磅了。https://www.amazon.com/Programming-Windows-p6-Developer-Reference-ebook/dp/B00JDMPJ8E/ref=dp_ob_title_def - Charlie Martin

26

约4年前,我开始深入了解Windows API。当时我使用的是C#编程语言,但感觉该框架将我从API中抽象出太多(实际确实如此)。因此,我转向使用Delphi(也可以选择C++或C)。

在我看来,重要的是你开始使用一种创建本地代码并直接与Windows API交互的编程语言,并使你关注缓冲区、指针、结构和Windows直接使用的真实构造。C#是一种很好的编程语言,但不是学习Windows API的最佳选择。

接下来,购买Mark Russinovich的书籍《Windows Internals》亚马逊链接,这是第5版,第6版于2012年4月发布,新增有关Server 2008 R2和Windows 7的信息。

现在,介绍一下学习Win32 API最重要(也是最好)的资源:

Mark Russinovich的Windows Operating Systems Internals Curriculum,提供免费下载。

它是为教师设计,用于教授学生。我学习过这个课程,感觉非常棒。这个课程充满了例子、历史和详细的解释。在我看来,这是学习Windows API的理想方法。

Mark Russinovich是微软技术研究院的技术上席(MS只有14位技术上席,其中包括C#的创造者),曾经拥有Winternals,后将其出售给微软,并拥有卡内基梅隆大学的计算机工程博士学位。他曾多次在微软会议上发表演讲(即使在他为微软工作之前也是如此),并且非常聪明。他的演讲是我每年参加微软TechEd的主要原因之一。


1
感谢提供《Windows操作系统内部课程》,我从未知道其存在。 - Justin
1
对于《Windows 操作系统内部课程》,我也不知道它的存在,但我会给它点赞。 - claws
3
Windows操作系统内部课程的文件已经移动了。有新链接吗?谢谢! - Andre Polykanine
1
链接已经失效了,您能修复一下吗?谢谢。 - Xam

7

我强烈推荐theForger's Win32 API教程。这是一份C语言教程,但作者会详细讲解基础知识,适合初学者。而且这份教程比较简短,非常适合教程使用。


7

避免阅读针对新手的教程(由孩子编写) 阅读Petzold、Richter、Pietrek、Russinovich和Adv.Win32 API newsgroup news://comp.os.ms-windows.programmer.win32


3
学习Win32 API只占了对概念和模式的初始理解的5%,其余95%是RTFM(Read The F****** Manual)。
对于这最初的5%,Petzold的书非常好,但我怀疑在谷歌上可以找到一些在线教程,你可以像我一样找到好的教程。
实际上,一旦你掌握了它,它就非常简单,可以做任何事情。一旦你达到那个水平,可能是时候转向更好的东西,比如QT,永远不再碰Win32 API了。现在几乎没有人会使用裸的Win32 API来做任何超出琐碎的事情,因为它涉及到巨大的开销和极度缺乏舒适性。

3
我经常使用Windows API。实际上,即使在使用框架时,我也经常使用自己对Windows API的理解来解决问题和编写代码。不要被骗了。你可能并不总是直接调用API,但如果你了解它,你会成为一个更好的程序员。 - Mick

2

既然你问到Python,那么为什么需要Win32 API?Win32 API 通常用于编写小型、快速的 C/C++ 程序。如果你正在使用 Python,只需下载 wxPython,在 Windows 上运行良好,并且用 1% 的代码和努力生成流畅的本地 GUI。


此外,它应该更容易移植到其他系统。 - Brad Gilbert
1
除非需要完成只能使用Windows API才能完成的特定任务,而且不懂C(++/#)。 - UnkwnTech

2

1

1

嗯...很多人在这个问题上本末倒置了。我想问你的问题是:你为什么想学习Win32?

如果你想学习它来构建Windows用户界面,也许考虑使用wxPython。如果你只计划调用非可视Win32 API,则Petzold书可能不是最好的选择。有一些工具,如SWIG,可以使从诸如Python之类的语言更轻松地调用Win32等库。


我不同意,先学习低级编程可以为所有Windows编程打下坚实的基础。学习Win32可以让你了解底层发生了什么。 - Justin

0

从前,我曾经在 www.relisoft.com 上阅读过一些Win32 API教程。

它们是反MFC和赞成Win32 API的团队,并有一份类似宣言的东西,解释了实际原因。

他们还有一个通用的C++教程。就我所知,99%的时间我都喜欢他们的编程风格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接