与Windows交互的任何程序/语言/库是否通过WIN32 API执行?

时间:2014-08-11 15:21:31

标签: wpf winapi mfc

我熟悉WinForms和MFC,它们都建立在WIN32 API之上。实际上在这两者中的任何一个中,当你在后台调用Button框架调用多个API函数来完成工作时。

所以我的问题是,所有其他库是否通过WIN32 API与Windows交互?

我能想到的唯一另一个是WPF(也许是Qt?Idk,Qt究竟是什么),我对其他任何东西都不熟悉。

1 个答案:

答案 0 :(得分:3)

Windows API是Windows的公共编程接口,在Windows上运行的任何(桌面)应用程序最终都会调用Windows API来完成工作。这是通过不同的抽象层次来实现的:

  • 使用C语言编写的应用程序在没有CRT支持的情况下访问Windows API将直接使用通过Windows API提供的服务。
  • 使用CRT用C或C ++编写的应用程序将混合使用直接调用Windows API和使用CRT的抽象。例如,使用mallocnew的内存分配将映射到CRT的Windows API调用。
  • 使用CFC框架(如MFC,Qt或WTL)的应用程序仍然可以直接调用Windows API,但通常会使用框架提供的服务。框架提供的服务最终会调用Windows API。
  • 编译为通用中间语言(CIL)的.NET应用程序将通过公共语言运行时(CLR)编译为本机代码。 CLR提供的服务是在Windows API之上实现的。
  • 诸如VBScript之类的脚本语言由执行环境(例如,用于VBScript的Windows Scripting Host)执行。此执行环境也在Windows API之上实现。

我能想到的唯一例外是WinRT。 WinRT的某些部分通过Windows API使用现有的Windows服务。其他部分从上到下都是全新的,并直接与内核交互。

还有可能回避Windows API并通过Native API直接与内核交互。但是,这不是公开记录的,也不是官方的编程接口。