2008-12-02 17 views
6

Así que no hago muchas llamadas a Win32, pero recientemente tuve que usar las funciones GetFileTime() y SetFileTime(). Ahora bien, aunque Win98 y versiones posteriores no son compatibles oficialmente con mi programa, la gente lo usa allí de todos modos, y trato de mantenerlo lo más utilizable posible. Me preguntaba qué pasaría, ya que esas funciones no existen en los sistemas anteriores a NT, ¿recibirán un mensaje de error de algún tipo, por ejemplo, porque en ese caso agregaré una verificación del sistema operativo? GraciasLlamar a la función NT en el sistema pre-NT

Respuesta

8

Si llamas a las funciones directamente, entonces tu programa no se cargará en Win98.

Lo que puede hacer es usar LoadLibrary()/GetProcAddress() para obtener un puntero a GetFileTime()/SetFileTime(). En Win98, esto fallará y le dará un puntero nulo que puede probar e ignorar. En 2000 y más adelante obtendrá un puntero que luego podrá usar.

Es un dolor, pero es la única solución que conozco.

Aquí es un ejemplo de conseguir la función UpdateLayeredWindow si existe:

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

se podría llamar FindFirstFile() en lugar de GetFileTime(). Sin embargo, no sabría una alternativa para SetFileTime().

+0

De la investigación que he hecho parece que no hay una, ¡aunque gracias! – SteveL

Cuestiones relacionadas