c++ - 在 NT 之前的系统上调用 NT 函数

标签 c++ windows winapi dll

所以我没有做很多 Win32 调用,但最近我不得不使用 GetFileTime()SetFileTime()功能。现在虽然我的程序没有正式支持 Win98 和更低版本,但人们仍然在那里使用它,我尽量保持它的可用性。我只是想知道会发生什么,因为这些功能在 NT 之前的系统中不存在,它们是否会收到某种错误消息,例如因为在那种情况下我会添加操作系统检查?谢谢

最佳答案

如果您直接调用这些函数,那么您的程序将无法在 Win98 上加载。

您可以使用 LoadLibrary()/GetProcAddress() 获取指向 GetFileTime()/SetFileTime 的指针()。在 Win98 上这将失败,给你一个空指针,你可以测试并忽略它。在 2000 及更高版本上,您将获得一个可以使用的指针。

这很痛苦,但这是我所知道的唯一解决方案。

下面是获取 UpdateLayeredWindow 函数(如果存在)的示例:

typedef BOOL (WINAPI* UpdateLayeredWinFunc) (HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);

UpdateLayeredWinFunc updateLayeredWindow = 0;
HMODULE user32Mod = GetModuleHandle (_T("user32.dll"));
updateLayeredWindow = (UpdateLayeredWinFunc) GetProcAddress (user32Mod, "UpdateLayeredWindow");

关于c++ - 在 NT 之前的系统上调用 NT 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334674/

相关文章:

windows - 我可以在一个窗口中有多个 Powershell 控制台吗?

c++ - All-aero 窗口混合了控件的颜色——如何避免这种情况

java - 获取开始菜单的截图

c++ - 如何访问 map ?

c++ - 在 Mac 上编写 C(和变体),并导出到 Mac 和 Windows

c++ - qt windows 包含 boost 线程 header 失败

python - Windows 中的临时 PYTHONPATH

dll - 我如何知道 dllmain 何时完成?

c++ - SSE 中高效的 min() 函数

c++ - 在这种情况下,Hinnant 的 unique_ptr 实现是否错误地无法将派生转换为基础?