6 Stimmen

Aufruf einer NT-Funktion auf einem Vor-NT-System

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

8voto

Roland Rabien Punkte 8576

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");

0voto

Michael Stum Punkte 172055

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

0voto

MSalters Punkte 166675

Sie könnten anrufen FindFirstFile() anstelle von GetFileTime() . Ich wüsste keine Alternative für SetFileTime() Allerdings.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X