2008-12-02 14 views
6

So mache ich nicht viele Win32-Aufrufe, aber in letzter Zeit musste ich die GetFileTime() und SetFileTime() Funktionen verwenden. Nun, obwohl Win98 und unten in meinem Programm nicht offiziell unterstützt werden, benutzen sie es dort trotzdem und ich versuche, es so gut wie möglich zu nutzen. Ich habe mich nur gefragt, was passieren wird, da diese Funktionen in Pre-NT-Systemen nicht existieren. Werden sie eine Fehlermeldung erhalten, weil ich in diesem Fall einen OS-Check hinzufügen werde? DankeNT-Funktion auf Pre-NT-System aufrufen

Antwort

8

Wenn Sie die Funktionen direkt aufrufen, wird Ihr Programm nicht auf Win98 geladen.

Sie können LoadLibrary()/GetProcAddress() verwenden, um einen Zeiger auf GetFileTime()/SetFileTime() zu erhalten. Auf Win98 schlägt dies fehl und gibt Ihnen einen Nullzeiger, den Sie testen und ignorieren können. Ab 2000 erhalten Sie einen Zeiger, den Sie verwenden können.

Es ist ein Schmerz, aber es ist die einzige Lösung, die ich kenne. Hier

ist ein Beispiel des Erhaltens der UpdateLayeredWindow Funktion, wenn es vorhanden ist:

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

Sie FindFirstFile() statt GetFileTime() nennen könnte. Ich würde jedoch keine Alternative für SetFileTime() wissen.

+0

Von der Forschung, die ich getan habe, scheint es, dass es nicht einen gibt, danke, obwohl! – SteveL

Verwandte Themen