win32 api已经过时了吗?

时间:2013-08-12 18:20:20

标签: c# .net c windows winapi

win32 api是否仍在开发中,今天值得学习吗?你可以使用原生api的.net框架做你能做的一切吗?

4 个答案:

答案 0 :(得分:36)

Windows API仍在开发中。例如,请参阅Windows 8.1 New APIs and features for developersWindows 8 and 8.1 API Index。过时了吗?不见得。总是需要了解Windows如何在较低级别工作的人。有人必须编写设备驱动程序和低级系统实用程序。

知识很少无用。如果您正在编写低级实用程序,那么学习Windows API如何工作是非常必要的,即使在用C ++或Delphi编写本机应用程序时也非常方便。在编写.NET应用程序时不那么容易,但是大多数.NET运行时库在很大程度上依赖于Windows API。因此,了解它如何在“引擎盖下”工作是非常有用的。

此外,还有一些.NET库没有公开的东西。例如,我正在处理的C#程序需要访问另一个开发人员在C ++应用程序中使用的Waitable Timer。 .NET库不提供该特定内核对象的包装器,因此我必须自己编写,这涉及深入研究Windows API。

在大多数.NET开发中,您可能不必了解有关Windows API的任何信息。但它肯定没有伤害。我知道,通过理解Windows API编程,我理解为什么.NET的某些部分以他们的方式工作。此外,在努力开发Windows API之后,我更能够体会到.NET给我带来的巨大生产力提升。

答案 1 :(得分:14)

这个问题的另一个答案是从专业软件管理的角度出发。具体来说,微软淘汰Win32 api的成本太高了。也就是说,如果他们在Windows 9中不支持它,那么当前运行需要API的程序的每个客户都将重新评估他们使用任何Microsoft产品的需求。

有些客户,即不止一些客户会说微软的产品价格过高,并且会借此机会1)保留在Windows 8上,直到时间结束,并且永远不会从微软购买另一种产品;或者2)将他们的业务系统转换为使用* nix或Apple系统。

注意,以上不是我的推测。这种情况发生在IBM在1960年代,当时他们迫使他们的客户群迁移到360系列硬件。当时的360与之前的IBM大型机完全不同,客户必须大幅度重新使用现有软件才能在新机器上运行。许多IBM客户选择与Sperry-Rand和其他硬件供应商合作,其中新机器和转换的成本低于IBM 360和转换的成本。

由于企业有选择权自由,IBM几乎破产了!他们(IBM)吸取了教训。到目前为止,仍然可以在当今的IBM大型机上运行1960年代编写的程序。

答案 2 :(得分:2)

WIN API仍在开发中。

根据您的计划,可能有用,或者可能不是..

是的,有些东西无法用.Net完成,在这种情况下你使用PInvoke。但INMH你不需要知道WINAPI,只需知道在需要时搜索的位置..

http://www.pinvoke.net/default.aspx

答案 3 :(得分:0)

您仍然可以在.NET中使用win32 api:

http://msdn.microsoft.com/en-us/magazine/cc164123.aspx