所以我不会做很多Win32调用,但最近我不得不使用GetFileTime()和SetFileTime()函数。现在,尽管在我的程序中Win98和更低版本不受官方支持,但人们还是会在那里使用它,并且我会尽量保持它的可用性。我只是想知道会发生什么,因为这些功能在NT之前的系统中不存在,他们会收到某种类型的错误消息吗,例如,因为在这种情况下,我将添加操作系统检查?谢谢
发布于 2008-12-02 16:59:39
如果您直接调用这些函数,那么您的程序将不会在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");发布于 2008-12-02 17:01:00
我相信你会得到一条类似于"The procedure entry point (name) not be located in (dll)“的错误信息,类似于下面所示的:
example http://img266.imageshack.us/img266/3762/error2pm1.png
发布于 2008-12-03 14:38:18
您可以调用FindFirstFile()而不是GetFileTime()。不过,我不知道SetFileTime()有什么替代方案。
https://stackoverflow.com/questions/334674
复制相似问题