Ich mache also nicht viele Win32-Aufrufe, aber in letzter Zeit musste ich die GetFileTime()
y SetFileTime()
Funktionen. Obwohl Win98 und darunter nicht offiziell von meinem Programm unterstützt werden, benutzen es die Leute dort trotzdem, und ich versuche, es so benutzbar wie möglich zu halten. Ich frage mich nur, was passieren wird, da diese Funktionen in Systemen vor NT nicht existieren. Werden sie zum Beispiel eine Fehlermeldung erhalten, weil ich in diesem Fall eine Betriebssystemprüfung einbauen werde? Vielen Dank
Antworten
Zu viele Anzeigen?Wenn Sie die Funktionen direkt aufrufen, wird Ihr Programm unter Win98 nicht geladen.
Was Sie tun können, ist die Verwendung von LoadLibrary()
/ GetProcAddress()
um einen Zeiger zu erhalten auf GetFileTime()
/ SetFileTime()
. Unter Win98 schlägt dies fehl und Sie erhalten einen Nullzeiger, den Sie testen und ignorieren können. Unter 2000 und später erhalten Sie einen Zeiger, den Sie verwenden können.
Es ist mühsam, aber die einzige Lösung, die ich kenne.
Hier ein Beispiel für das Abrufen der Funktion UpdateLayeredWindow, wenn sie existiert:
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");
Ich glaube, Sie erhalten eine Fehlermeldung in der Art von "Der Prozedureinstiegspunkt (Name) konnte nicht in (dll) gefunden werden", ähnlich wie die abgebildete:
Beispiel http://img266.imageshack.us/img266/3762/error2pm1.png