如何学习Win32 API?

29

我想学习如何使用Win32 API,因为最近我有很多需要使用user32.dll函数的任务,所以我正在尝试学习。我搜索了一下,但问题是:所有关于此的教程都只告诉你如何执行特定的操作,例如通过Win32 API显示一个MessageBox,但你实际上无法学习Win32框架。

那么你如何真正地学会它呢?你怎么知道所有的函数?对于托管库来说,这相当容易,特别是使用提供IntelliSense、对象浏览器等功能的Visual Studio,但从C#开发者的角度来看,Win32 API太混乱了。

到目前为止,我一直在使用Google搜索任务,并发现可以使用Win32 API完成(我之前不知道),然后复制该函数并使用它(对我来说很可怕,我感觉自己错过了很多“力量”)。

那么,我该如何学习呢?

清楚地说:我对书籍不感兴趣。虽然听起来很糟糕,但我需要这个知识来完成一个项目,而我没有时间投入到书籍中。我已经得到了我的答案。
谢谢大家。


1
可能是win32 api编程书籍的重复问题。 - Sinan Ünür
3
我经常感觉pinvoke比msdn更好。 - Tung
2
真正理解pinvoke的核心,您必须首先学习C语言。 Pinvoke声明通常有意更改自股票SDK定义的声明,以使函数更易于使用。 特别是那些使用PVOID或LPARAM的函数,如普遍的SendMessage(),通过更改参数类型可以更好地声明。 寻找帮助的最佳地点就在这里。 - Hans Passant
5个回答

8

3
首先,Win32是一组子系统。你可能不容易学习到全部的内容,你需要进行优先排序。
但是,为了能够说出你想要学习的内容,你可能需要了解一个大局观。我认为最好的方法是通过Charles Petzold的《Programming Windows》来接触Win32。这本书很清晰易读,易于理解。有很多例子可以让你自己尝试和实验。
在你学习基础知识之后,我推荐Mark Russinovich的《Microsoft Windows Internals》。虽然比较高级,但它让你能够了解Windows核心内部的情况。

3

2

2

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