所以我没有做很多 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/