@gage
В Delphi есть несколько способов получить информацию о системе, например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
uses SystemInfo;
var
SysInfo: TSystemInfo;
begin
SysInfo := TSystemInfo.Create;
try
ShowMessage('Операционная система: ' + SysInfo.OSFullName);
ShowMessage('Версия операционной системы: ' + SysInfo.OSVersion);
ShowMessage('Количество процессоров: ' + IntToStr(SysInfo.ProcessorCount));
ShowMessage('Общее количество памяти: ' + IntToStr(SysInfo.TotalMemory));
finally
SysInfo.Free;
end;
end;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
uses Windows;
var
osVerInfo: TOSVersionInfo;
begin
ZeroMemory(@osVerInfo, SizeOf(TOSVersionInfo));
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(osVerInfo);
ShowMessage('Операционная система: ' + osVerInfo.szCSDVersion);
ShowMessage('Версия операционной системы: ' + IntToStr(osVerInfo.dwMajorVersion) + '.' + IntToStr(osVerInfo.dwMinorVersion));
ShowMessage('Количество процессоров: ' + IntToStr(SystemInfo.dwNumberOfProcessors));
ShowMessage('Общее количество памяти: ' + IntToStr(SystemInfo.dwTotalPhys div (1024 * 1024)) + ' МБ');
end;
|
Оба примера дают информацию о версии операционной системы, количестве процессоров и общем объеме памяти. Однако в первом примере мы используем объект TSystemInfo, который также может предоставить дополнительную информацию, например, о версии процессора и его скорости.
@gage
Также можно использовать следующий код для получения информации о системе в Delphi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
uses Windows, SysUtils, Winapi.ShlObj, ShlObj, ActiveX;
function GetSystemInfo: string;
var
osVersionInfo: TOSVersionInfoEx;
sysInfo: TSystemInfo;
dwBufferSize: DWORD;
dwLength: DWORD;
pBuffer: LPSTR;
strBuffer: string;
begin
ZeroMemory(@osVersionInfo, SizeOf(osVersionInfo));
ZeroMemory(@sysInfo, SizeOf(sysInfo));
osVersionInfo.dwOSVersionInfoSize := SizeOf(osVersionInfo);
GetVersionEx(TOSVersionInfo(@osVersionInfo));
Result := 'Операционная система: ' + osVersionInfo.szCSDVersion + #13#10 +
'Версия операционной системы: ' + IntToStr(osVersionInfo.dwMajorVersion) +
'.' + IntToStr(osVersionInfo.dwMinorVersion) + #13#10 +
'Количество процессоров: ' + IntToStr(sysInfo.dwNumberOfProcessors) + #13#10;
sysInfo.dwPageSize := 0;
GetSystemInfo(sysInfo);
Result := Result + 'Общее количество памяти: ' +
IntToStr(sysInfo.dwTotalPhys div (1024 * 1024)) + ' МБ';
// Дополнительная информация о системе
dwLength := MAX_PATH + 1;
pBuffer := PChar(strBuffer);
dwBufferSize := MAX_PATH;
if SUCCEEDED(SHGetFolderPath(0, CSIDL_COMMON_DESKTOPDIRECTORY, 0, 0, pBuffer)) then
begin
Result := Result + #13#10 + 'Путь к рабочему столу: ' + strBuffer;
end;
if SUCCEEDED(SHGetFolderPath(0, CSIDL_COMMON_STARTMENU, 0, 0, pBuffer)) then
begin
Result := Result + #13#10 + 'Путь к меню Пуск: ' + strBuffer;
end;
if SUCCEEDED(SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, 0, pBuffer)) then
begin
Result := Result + #13#10 + 'Путь к локальным данным: ' + strBuffer;
end;
if SUCCEEDED(SHGetFolderPath(0, CSIDL_PROFILE, 0, 0, pBuffer)) then
begin
Result := Result + #13#10 + 'Путь к профилю пользователя: ' + strBuffer;
end;
if SUCCEEDED(SHGetFolderPath(0, CSIDL_SYSTEM, 0, 0, pBuffer)) then
begin
Result := Result + #13#10 + 'Путь к системной папке: ' + strBuffer;
end;
CoTaskMemFree(pBuffer);
end;
|
Этот код также выводит информацию о версии операционной системы, количестве процессоров и общем объеме памяти. Он также добавляет дополнительную информацию о пути к рабочему столу, меню Пуск, локальным данным, профилю пользователя и системной папке.