| Как получить информацию о системе (свободная память и т.д.) |
|
| Написал Alexeis | |
| 24.07.2007 | |
|
Если вы хотите узнать сколько виртуальной памяти вам доступно вашей программе или общий объем физической и виртуальной памяти достаточно воспользоваться API функцией GlobalMemoryStatus. Рассмотрим следующий код. Добавим на форму кнопку (TButton) и многострочный редактор (TMemo). После чего в обработчик кнопки вставляем следующий код. procedure TForm1.Button1Click(Sender: TObject); var MemoryStatus: TMemoryStatus; begin Memo1.Lines.Clear; MemoryStatus.dwLength := SizeOf(MemoryStatus) ; GlobalMemoryStatus(MemoryStatus) ; with MemoryStatus do begin Memo1.Lines.Add(IntToStr(dwMemoryLoad) + '% использованно памяти') ; Memo1.Lines.Add(IntToStr(dwTotalPhys) + ' Всего физической памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(dwAvailPhys) + ' Доступно физической памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(dwTotalPageFile) + ' Всего виртуальной памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(dwAvailPageFile) + ' Доступно виртуальной памяти (в байтах) ') ; Memo1.Lines.Add(IntToStr(dwTotalVirtual) + ' Адресное виртуальное простанство текущего процесса') ; Memo1.Lines.Add(IntToStr(dwAvailVirtual) + ' Доступно байт виртуального адресного пространства текущего процесса') ; end; end;В Memo1 видим всю необходимую информацию. Источник delphi.about.com/b/a/257850.htm Добавлено: Пример устарел с появлением памяти более 2Гб. Переделан для Windows2000 и выше: type DWORDLONG = Int64; // ULONGLONG {$EXTERNALSYM DWORDLONG} PMemoryStatusEx = ^TMemoryStatusEx; LPMEMORYSTATUSEX = PMemoryStatusEx; {$EXTERNALSYM LPMEMORYSTATUSEX} _MEMORYSTATUSEX = packed record dwLength : DWORD; dwMemoryLoad : DWORD; ullTotalPhys : DWORDLONG; ullAvailPhys : DWORDLONG; ullTotalPageFile: DWORDLONG; ullAvailPageFile: DWORDLONG; ullTotalVirtual : DWORDLONG; ullAvailVirtual : DWORDLONG; end; {$EXTERNALSYM _MEMORYSTATUSEX} TMemoryStatusEx = _MEMORYSTATUSEX; MEMORYSTATUSEX = _MEMORYSTATUSEX; {$EXTERNALSYM MEMORYSTATUSEX} procedure GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx); stdcall; external kernel32 name 'GlobalMemoryStatus'; {$EXTERNALSYM GlobalMemoryStatusEx} // Пример использования: procedure TForm1.Button1Click(Sender: TObject); var MemoryStatusEx: TMemoryStatusEx; begin Memo1.Lines.Clear; MemoryStatusEx.dwLength := SizeOf(MemoryStatusEx); GlobalMemoryStatusEx(MemoryStatusEx); with MemoryStatusEx do begin Memo1.Lines.Add(IntToStr(dwMemoryLoad) + '% использованно памяти') ; Memo1.Lines.Add(IntToStr(ullTotalPhys) + ' Всего физической памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(ullAvailPhys) + ' Доступно физической памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(ullTotalPageFile) + ' Всего виртуальной памяти (в байтах)') ; Memo1.Lines.Add(IntToStr(ullAvailPageFile) + ' Доступно виртуальной памяти (в байтах) ') ; Memo1.Lines.Add(IntToStr(ullTotalVirtual) + ' Адресное виртуальное простанство текущего процесса') ; Memo1.Lines.Add(IntToStr(ullAvailVirtual) + ' Доступно байт виртуального адресного пространства текущего процесса') ; end; end; |
| < Пред. | След. > |
|---|

