5

似乎 Win32 API(机 Windows 应用程序的 C API)越来越被更现代的框架和工具包所取代,包括微软自己的 WPF 和 Qt。

如果编程语言不是问题——如果您没有设置在托管环境或函数式编程风格等上——Win32 API 会带来什么吗? 是否有任何功能可以使用 Win32 API 实现,而 WPF 或其他框架不具备这些功能?

我知道可以将 Win32 代码混合到 WPF/托管软件中,因此不必选择其中之一。但是在使用更高级别的语言/框架开发程序时需要打破 Win32 API 的一些例子是什么?

4

4 回答 4

3

另一个更具体的例子是“windows hooks”。

我需要在某个时候挂钩一些套接字程序,唯一可能的方法是 windows api。

为了详细说明,我想接收在另一个侦听套接字上接收到的所有通信。这样做需要钩子

于 2013-10-03T06:24:42.493 回答
2

...并且不要忘记像“WinUSB”这样的直接硬件访问和调试功能(编写充当调试器的程序)。

于 2013-10-03T08:26:35.013 回答
2

当然。

所有框架都是根据 Win32 API 编写的。这些框架涵盖了程序员需要做的 80-95%,但如果您需要对某些东西进行真正的低级控制,则需要使用底层的 Win32 API。一些例子是:

  1. 精确控制文本渲染(通过DirectWrite),
  2. 使用SAPI对语音识别进行详细控制(实际上有几十个接口没有通过 System.Speech 公开),
  3. 低级网络代码(即任何与 HTTP 无关的代码),
  4. 如果您对性能感兴趣,几乎所有与音频相关的东西。
于 2013-10-03T06:22:12.203 回答
0

Win32 API 目前还远没有被任何框架所取代。如果是这种情况,大多数 API 将不会由 Microsoft 更新。相反,添加和更新了许多新界面。

有像 Qt 这样的框架,但是,除非你需要创建的东西是微不足道的,否则你最终会使用 API,特别是对于新的图形库、音频、视频、usb、功能区、套接字、网络、COM 自动化、生物识别、加密、数字签名、安全、脚本等。

实际上,大多数库都已经过时了,虽然您可以创建一个主要依赖于工作线程而不是接口的应用程序,但今天构建一个漂亮、现代和有用的应用程序肯定需要 API。因此,投资一个只覆盖应用程序最小部分的框架不值得学习曲线,这些框架主要针对真正新的和没有经验的 Windows 开发人员。

于 2018-11-03T18:01:29.897 回答