Ved at kigge på \"VER_PLATFORM_XXX\". Nedenstående er fra før Windows ME, så jeg er ikke sikker på hvordan den skal se ud, men jeg gætter på at Win32MinorVersion er = 11 ?
<SNIP> _OsIs32s := (Win32Platform = VER_PLATFORM_WIN32s); _OsIs95 := (Win32Platform = VER_PLATFORM_WIN32_WINDOWS); _OsIsW95 := (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion = 4) and (Win32MinorVersion <= 9); _OsIsW98 := (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion = 4) and (Win32MinorVersion >= 10); _OsIsNT := (Win32Platform = VER_PLATFORM_WIN32_NT); _OsIsNT4 := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion = 4); _OsIsNT5 := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion = 5); _OsIsW2000 := (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion = 5); </SNIP>
Øhhh. Ovenstående sætter værdierne for nogle boolean\'s så måske du lige skulle definere disse først (hvis du vil bruge det lige som jeg selv gør): <SNIP> Var _OsIs32S : Boolean; // Windows 3.1x with 32s //--- _OsIs95 : Boolean; // Windows 95/98 (W95 or W98) _OsIsW95 : Boolean; // Windows 95 (Only W95, not W98) _OsIsW98 : Boolean; // Windows 98 (Only W98, not W95) //--- _OsIsNT : Boolean; // Windows NT (NT4 or W2000) _OsIsNT4 : Boolean; // Windows NT4 (Only NT4, not W2000) _OsIsNT5 : Boolean; // Windows NT5 (Only W2000, not NT4) _OsIsW2000 : Boolean; // Same as NT5 </SNIP>
Jeg ville nok istedet gøre det noget i retning af følgende, hvor jeg spørger operativ systemet selv (med et kald til \'GetVersionEX\'. Bemærk at jeg, som pellelil, ikke lige ved hvorledes Win 2000, ME etc vil svare, idet dokumentationen kun snakker Win 3.1, Win 95, Win 98 og Win NT. I øvrigt kan du lige checkke op på parameteren TOSVersionInfo, der indeholder anden info, så som Minor og Major version (til fx. hvilken WinNT man benytter).
procedure TForm1.Button1Click(Sender: TObject); Var VI : TOSVersionInfo; OSStr : String; begin VI.dwOSVersionInfoSize := SizeOf(VI); GetVersionEX(VI); If (VI.dwPlatformID = VER_PLATFORM_WIN32s) Then OSStr := \'Windows 3.1\' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) And (VI.dwMinorVersion = 0) Then OSStr := \'Windows 95\' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) And (VI.dwMinorVersion > 0) Then OSStr := \'Windows 98\' Else If (VI.dwPlatformID = VER_PLATFORM_WIN32_NT) Then OSStr := \'Windows NT\' Else OSStr := \'Unknown OS System.\';
Delphi> Jeg ER sikker på hvordan W2K ser ud det er bare Windows ME jeg er i tvivl om.
Ydermere er der ingen grund til at \"gøre det så besværligt\". Delphi \"definere\" selv variablerne \"Win32Platform\" og fylder værdier i denne - dette sker rent faktisk i proceduren \"InitPlatformId\" (som ligger i SysUtils.pas) :-)
Det \"helt simple\" vil være: <SNIP> if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then // W95,W98.. begin end; if Win32Platform = VER_PLATFORM_WIN32_NT then // NT4, NT5(W2K) begin end; </SNIP>
Jeg er ligeglad med WinME og alt det andet. Det eneste jeg skal vide er om programmet bli\'r startet fra NT eller 9x (eller faktisk kun Win95 for at være helt præcis!)
hehe...det kunne jo bruges det du svarede, så jeg synes ikke du skulle snydes helt for point ;) Det er jo trods alt snart jul :P
Snowball
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.