gpt4 book ai didi

c++ - 管理 Windows XP 和 Vista/Server 2008 之间的 Windows API 差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:52 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的 Win32 应用程序的可执行文件,该应用程序必须能够在 Windows XP 和 Windows Vista/2008 上运行。

由于 Vista 工作方式的一些变化,必须调用一些额外的 Win32 API 才能使程序像在 XP 上一样正常运行。

目前我检测应用程序是否在比 XP 更新的 Windows 版本上运行,并根据需要调用额外的 win32 函数。这在 Vista 和 Server 2008 上运行时工作正常,但在 Windows XP 上运行时失败。

在 Windows XP 上,程序启动时出现错误消息:无法在动态链接库 USER32.DLL 中找到过程入口点 ShutdownBlockReasonCreate。这发生在我的任何代码开始执行之前,并且在 XP 上运行时没有任何代码路径应该调用该函数。

我真的很想拥有一个可在 XP 和 Vista 上运行的可执行文件。如果可能的话,我不想有条件编译和有两个可执行文件。

解决这个问题的最佳方法是什么?

最佳答案

您必须使用 LoadLibrary() 和 GetProcAddress() 来获取此函数的入口点。在 XP 上,您将从 GetProcAddress() 返回 NULL,足以跳过调用。有一个 good example在 SDK 文档中,唯一棘手的部分是声明函数指针:

  typedef BOOL (WINAPI *MYPROC)(HWND, LPCWSTR); 

关于c++ - 管理 Windows XP 和 Vista/Server 2008 之间的 Windows API 差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2252767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com