![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, что мы в 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