Версия системы и данные о пользователе Версия системы и данные о пользователе
Определение типа платформы |
*
| *
|
| |
Как уже говорилось в совете "Определение версии Windows ", функция API GetVersionEx
возвращает идентификатор платформы (dwPlatformId) и версию ОС. По ним достаточно легко
установить платформу:
Function GetOSName : string;
var
VI : TOSVersionInfo;
IsOSNT, IsOSW2K,
IsOS95, IsOSOSR2,IsOS98 : boolean;
begin
FillChar(VI, SizeOf(VI), 0);
VI.dwOSVersionInfoSize := SizeOf(VI);
GetVersionEx(VI);
// Проверка и расшифровка версии и платформы
IsOS95 := (VI.dwMajorVersion>=4) and (VI.dwMinorVersion=0) and (VI.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS);
IsOS98 := (VI.dwMajorVersion >= 4) and (VI.dwMinorVersion>0) and (VI.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS);
IsOSOSR2 := (VI.dwMajorVersion >= 4) and (VI.dwMinorVersion=0) and (lo(VI.dwBuildNumber)>1000) and (VI.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS);
IsOSW2K := (VI.dwMajorVersion >= 5) and (VI.dwPlatformId=VER_PLATFORM_WIN32_NT);
IsOSNT := (VI.dwPlatformId = VER_PLATFORM_WIN32_NT) and not(IsOSW2K);
// Формирование названия ОС
Result:='Неизвестная ОС';
if IsOS95 then
Result:='Windows 95';
if IsOSOSR2 then
Result:='Windows 95 OSR2';
if IsOS98 then
Result:='Windows 98';
if IsOSW2K then
Result:='Windows 2000 Build '+inttostr(VI.dwBuildNumber);
if IsOSNT then
Result:='Windows NT '+inttostr(VI.dwMajorVersion)+'.'+inttostr(VI.dwMinorVersion);
end;
При разработке инсталляторов и иных продуктов, которым необходима информация об ОС
целесообразно сделать отдельный класс для получения подобной информации. Пример
такого класса можно скачать с моего сайта из раздела "Компоненты"
Определение версии Windows |
*
| *
|
| |
Для определения версии Windows удобно применять API функцию GetVersionEx();
Функция возвращает true при успешном вызове и false при ошибке.
При вызове этой функции ей передается единственный параметр типа TOSVersionInfo,
представлющий собой record с полями:
dwOSVersionInfoSize: DWORD;
| Размер структуры в байтах (должен быть установлен программой перед вызовом)
|
dwMajorVersion: DWORD;
| Версия Windowd - т.н. Major значение (т.е. цифра до точки, нопример в NT 4.0
это будет цифра 4). Для W2k возвращается 5
|
dwMinorVersion: DWORD;
| Версия Windowd - т.н. Minor значение (т.е. цифры после точки)
|
dwBuildNumber: DWORD;
| Номер Build в Windows NT/2k, в W9* это гибрид Build (младший word) и версии
(старший Word)
|
dwPlatformId: DWORD;
| Идентификатор платформы. Для него имеется несколько констант VER_PLATFORM_*:
- VER_PLATFORM_WIN32s - платформа W32s на W3.11
- VER_PLATFORM_WIN32_WINDOWS - платформа W32 на W95
- VER_PLATFORM_WIN32_NT - платформа NT (W2k опознается как платформа NT)
|
szCSDVersion: array[0..127] of AnsiChar;
| Строка ASCIIZ, для NT содержит последний сервиспак (например "Service Pack 4",
а для 95 содержит дополнительную информацию о системе
|
Пример использования:
var
VerInfo : TOSVersionInfo;
begin
FillChar(VerInfo, SizeOf(VerInfo), 0);
VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
GetVersionEx(VerInfo);
Caption := 'OS Ver = ' + inttostr(VerInfo.dwMajorVersion) + '.' +
inttostr(VerInfo.dwMinorVersion) +
' Build =' + inttostr(VerInfo.dwBuildNumber)+
' Plattform ID =' + inttostr(VerInfo.dwPlatformId);
end;
Определение имени, под которым пользователь пошел в систему |
*
| *
|
| |
Имя пользователя, под которым он вошел в систему, достаточно легко определяется
при помощи функции API GetUserName:
BOOL GetUserName(
LPTSTR lpBuffer, // Буфер для имени пользователя
LPDWORD nSize // Размер буфера
);
Таким образом можно написать функцию для определения имени пользователя:
function GetUserName :string;
var
buf : array[0..255] of char;
size : dword;
begin
size := SizeOf(buf);
GetUserName(buf, size);
result := buf;
end;
Определение имени компьютера |
*
| *
|
| |
Имя компьютера определяется при помощи функции API GetComputerName:
BOOL GetComputerName(
LPTSTR lpBuffer, // Буфер для имени компьютера
LPDWORD nSize // Размер буфера
);
Таким образом можно написать функцию для определения имени компьютера:
function ComputerName :string;
var
buf : array[0..255] of char;
size : dword;
begin
size := SizeOf(buf);
if GetComputerName(buf, size) then
result := buf
else result := 'Ошибка при определении имени компьютера';
result := buf;
end;
© Зайцев Олег, "Программирование на Delphi - обмен опытом" 1999-2004. При использовании любых материалов данного сайта
необходимо указывать источник информации. Дата обновления: 22.11.2004. Сайт размещен на хостинге AGAVA - Хостинг от AGAVA.ru