Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить, что мы в Windows Vista?


JetuS ©   (2007-09-07 09:19:00) 

Работаю с Delphi 2007.
Как определить версию Windows, а именно, что мы в Windows Vista?


DVM   (2007-09-07 17:56:00) [1]

Есть еще вот такой способ, чтобы обойти режим совместимости.

function GetTrueWindowsVersion: TOsVersion;

 function ExportsAPI(module: HMODULE; const apiName: string): boolean;
   begin
     Result := GetProcAddress(module, PChar(apiName)) <> nil;
   end;
var
 hKernel32: HMODULE;

begin
 Result := OsUnknown;
 hKernel32 := GetModuleHandle('kernel32');
 if hKernel32 > 0 then
   begin
     if ExportsAPI(hKernel32, 'GetLocaleInfoEx') then
       Result := OsWinVista
     else if ExportsAPI(hKernel32, 'GetLargePageMinimum') then
       Result := OsWin2003
     else if ExportsAPI(hKernel32, 'GetNativeSystemInfo') then
       Result := OsWinXP
     else if ExportsAPI(hKernel32, 'ReplaceFile') then
       Result := OsWin2000
     else if ExportsAPI(hKernel32, 'OpenThread') then
       Result := OsWinME
     else if ExportsAPI(hKernel32, 'GetThreadPriorityBoost') then
       Result := OsWinNT4
     else if ExportsAPI(hKernel32, 'IsDebuggerPresent') then
       Result := OsWin98
     else if ExportsAPI(hKernel32, 'GetDiskFreeSpaceEx') then
       Result := OsWin95OSR2
     else if ExportsAPI(hKernel32, 'ConnectNamedPipe') then
       Result := OsWinNT3
     else if ExportsAPI(hKernel32, 'Beep') then
       Result := OsWin95
     else
       Result := OsUnknown;
   end;
end;


homm   (2007-09-07 14:24:00) [2]

> [7] JetuS ©   (07.09.07 09:59)
> 2 clickmaker: Спасибо, попробую.

Как ты попробуешь, у тебя же висты нет :)))


Mirablics   (2007-09-07 10:07:00) [3]

Использовать функцию API GetVersionEx

function GetVersionEx(var lpVersionInformation: TOSVersionInfo): BOOL; stdcall;


Аргумент функции - структура TOSVersionInfo, содержит DwVersionInfoSize:DWORD - заполняется как sizeof(TOSVersionInfo) перед вызовом функции

DwMajorVersion:DWORD - старшая цифра версии Windows

Windows 95 - 4
Windows 98 - 4
Windows Me - 4
Windows NT 3.51 - 3
Windows NT 4.0 - 4
Windows 2000 - 5
Windows XP - 5
Windows Vista - 6

DwMinorVersion: DWORD - младшая цифра версии

Windows 95 - 0
Windows 98 - 10
Windows Me - 90
Windows NT 3.51 - 51
Windows NT 4.0 - 0
Windows 2000 - 0
Windows XP - 1
Windows Vista - 1
DwBuildNumber: DWORD

Win NT 4 - номер билда
Win 9x - старший байт - старшая и младшая цифры версии / младший - номер билда
dwPlatformId: DWORD

VER_PLATFORM_WIN32s Win32s on Windows 3.1.
VER_PLATFORM_WIN32_WINDOWS Win32 on Windows 9x
VER_PLATFORM_WIN32_NT Win32 on Windows NT, 2000
SzCSDVersion:DWORD

NT - содержит PСhar с инфо о установленном ServicePack
9x - доп. инфо, может и не быть


Palladin   (2007-09-07 10:07:00) [4]


> JetuS ©

там есть прекрасный пример определения версии Windows. Или тебе разжевать и в рот положить?


JetuS   (2007-09-07 09:59:00) [5]

2 clickmaker: Спасибо, попробую.


clickmaker   (2007-09-07 09:45:00) [6]

var V: OSVERSIONINFOEX;

V.dwOSVersionInfoSize := sizeof(OSVERSIONINFOEX);
GetVersionInfoEx(V);
if (V.dwMajorVersion = 6) and (V.wProductType = VER_NT_WORKSTATION) then
 ShowMessage('We are in Vista');


Anatoly Podgoretsky   (2007-09-07 09:44:00) [7]

А при чем тут твоя работа с Д2007, вот как запустишь на Висте, так и увидишь, что это не ХР


JetuS   (2007-09-07 09:42:00) [8]

2 Anatoly Podgoretsky: у меня висты нету, но надо предусмотреть, чтобы прога в висте не запускалась, а выдавала сообщение о том, что эта версия программы не для висты.


Anatoly Podgoretsky   (2007-09-07 09:40:00) [9]

Разве Висту сложно спутать с другими системами, да и как ты работаешь, если не знаешь в какой ОС


JetuS   (2007-09-07 09:39:00) [10]

2 Palladin: там про Vista ни слова.


Palladin   (2007-09-07 09:30:00) [11]

delphi-faq.zoxt.net


Наверх

Титульная страница Поиск, карта сайта Написать письмо