学习win32 API是否值得?

38

我确定有人一定会特别询问这个问题,但是从我所看到的情况来看,似乎没有人这样做(有关学习win32的问题,但这并不包括是否值得这样做)。

我非常有兴趣深入了解我使用的所有系统(我主要使用C#编程,至少是在专业领域),因此我想知道 - 学习win32是否值得,或者是否过度?我在浪费时间吗?我可以获得的知识是否值得这样做?


在StackOverflow上有类似/相关的问题:

学习低级WinAPI编程仍然有意义吗?
Win32编程对现代专业人员还有多大的相关性?

19个回答

1

.NET 是使用 win32 API 实现的,任何希望深入了解 .NET 的人都会从至少具有 win32 API 的边缘知识中受益匪浅。


1

这个问题看起来有点过时,但我还是会回答。

答案:复杂:是的。简单:可能不必要。

这实际上取决于你需要做什么。如果你需要使用.NET当前不支持的功能,请自行尝试。但要小心,大多数Framework提供的Win32保护措施并没有提供,如果你做了一些极其愚蠢的事情,你的机器将会蓝屏。

我知道当.NET第一次推出时,我对学习Win32没有兴趣,.NET已经在这里了,而且它是一个很大的改进。但关于Windows的悲哀事实是:所有新功能都首先在本地代码中实现,没有例外。如果你想在.NET包装之前使用Windows的任何部分,你要么使用C++中的Win32,要么使用C#或VB.NET中的Win32。.NET是Win32中所有东西的包装器。所以如果你等不及,是的,你可以Interop到操作系统的更低层。

了解Win32,也许有一天是Win64(无论他们称之为什么)将永远是一项有用的技能。任何高级技术都需要某种基础。


1
您永远不可能仅“学习”整个win32 API,因为它涵盖的内容太多了,而且它将是一个不断变化的目标。如果您使用C#进行开发,那么没有真正的意义。
话虽如此,请尝试使用纯C和API调用创建记事本。这将教会您足够让C#开发人员至少欣赏它。

当然我不指望自己能够掌握Win32的全部,我的意思是学习一个好的子集并获得工作知识。你的想法很有趣,听起来是个不错的项目 :) - ljs

1

如果我今天开始学习,我不会学习整个API。但是,我认为理解基本概念很重要,理解消息循环的工作方式是首要任务。


1
这里很多“否定”的回答似乎都集中在学习API中可用的实际方法、结构等方面。我会说是的,但不要关注API中各个组件,而是关注整体设计和功能方式。即使在了解操作系统核心层面发生了什么情况时,即使是.NET代码的故障排除也要容易得多。

0

我想进一步补充一下。我从未正式学习过Win32 API/MFC。当我第一次对GUI编程感兴趣时,我开始使用Visual C++ 4。无论如何,我希望当时保持那个基础,因为我没有足够快地掌握它(实际上我当时还很年轻),所以我转而学习了Visual Basic。

出于某种原因,尽管我很熟悉Pascal,但Delphi从未引起过我的兴趣,但我偏离了主题。现在,我在IT领域工作,并在NSIS中开发安装程序脚本-每隔一段时间,我需要额外的功能,而NSIS无法提供,因此我制作自己的插件,并选择Win32 API而不是MFC甚至完整的C++,以保持其快速和无依赖性。

这条评论的主要原因是我的好奇心让我着迷了。我想知道更多信息,那么学习API的最佳资源在哪里?书籍?网站?

MFC是否仍然值得攻克?我确实看到一个关于一个家伙用汇编语言开发Win32 GUI应用程序的网站!老实说,我认为那有点过了,但它是紧凑、快速的代码,有趣的概念,但我从来没有能够掌握80x86汇编语言(甚至在大学里我也无法做到RISC汇编语言!)


如果你是为了娱乐而编程,...并且汇编对你来说很有趣(谁知道为什么!),那么写GUI可能会成为一种学习练习的方式,但我无法想象告诉我的老板,我正在编写一些非常有效的东西,但这需要48个月! - EightyOne Unite
我回答中提供的教程是一个不错的起点。 - Will Marcouiller

0
滥用.NET框架和Win32会导致机器蓝屏?我对此表示怀疑。
了解Win32(或汇编语言)的最大价值在于当某些东西无法按预期工作时,你需要进行调试。你对底层系统的了解越多,调试问题就会更容易。

0
在您的职业生涯中,您很可能不会只创建全新的应用程序,在这些应用程序中,您将有自由选择所使用的技术和编程语言。
迟早有一天,您将不得不与使用Win32和C/C++编写的旧代码进行集成。在这种情况下,了解Win32将会有所帮助,特别是如果您使用PInvoke或C++/CLI进行集成。

0

如果你的工作依赖于某个系统,了解它的工作原理总是很有趣的。我并不是说你应该学习每一个细节,但至少要有一个良好的理解,以便在需要时能够自己搜索。

软件并不是魔法 - 好吧...至少99%的情况下不是 :-)

这里有一篇关于“魔法思维”和“GUID妖怪”的优秀文章,来自Eric Lippert对这个主题的探讨:It's not Magic


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