Как узнать информацию о системе в delphi?

Пользователь

от gage , в категории: Другие , 2 года назад

Как узнать информацию о системе в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от laney_johnson , 2 года назад

@gage 

В Delphi есть несколько способов получить информацию о системе, например:

  1. Использование модуля SystemInfo:
 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. Использование функций из модуля Windows:
 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, который также может предоставить дополнительную информацию, например, о версии процессора и его скорости.

Пользователь

от elissa , год назад

@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;


Этот код также выводит информацию о версии операционной системы, количестве процессоров и общем объеме памяти. Он также добавляет дополнительную информацию о пути к рабочему столу, меню Пуск, локальным данным, профилю пользователя и системной папке.