@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; |
Этот код также выводит информацию о версии операционной системы, количестве процессоров и общем объеме памяти. Он также добавляет дополнительную информацию о пути к рабочему столу, меню Пуск, локальным данным, профилю пользователя и системной папке.