2008-12-02 3 views
6

Так что я не очень много вызовов Win32, но в последнее время мне пришлось использовать функции GetFileTime() и SetFileTime(). Теперь, хотя Win98 и ниже официально не поддерживаются в моей программе, люди все равно используют его там, и я стараюсь держать его как можно более удобным. Мне просто интересно, что произойдет, поскольку эти функции не существуют в системах до NT, будет ли они получать сообщение об ошибке какого-то типа, например, потому что в этом случае я добавлю в проверку ОС? СпасибоВызов функции NT в системе pre-NT

ответ

8

Если вы вызываете функции напрямую, ваша программа не загружается на 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"); 
0

Вы могли бы назвать FindFirstFile() вместо GetFileTime(). Тем не менее, я бы не знал альтернативы для SetFileTime().

+0

Из исследования, которое я сделал, кажется, что его нет, спасибо! – SteveL 2008-12-09 16:18:24

Смежные вопросы