![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Вот, как, действительно, узнать весь обьем установленной оперативной памяти средствами WinApi? Процедура GlobalMemoryStatus() корректно работает только при ОЗУ<2048 мб, а сейчас таких компов малость осталось.
Есть какие-нибудь методы? Ну, в крайнем случае через реестр, но не через какую-то библиотеку. Или мож я в эту процедуру неверные параметры передаю: Код:
procedure fmemuse.calc; var lpMemoryStatus : TMemoryStatus; value1,value2:integer; begin inherited; if not ready then exit; lpMemoryStatus.dwLength := SizeOf(TMemoryStatus); GlobalMemoryStatus(lpMemoryStatus); value2:=lpMemoryStatus.dwTotalPhys div 1048576; value1:=value2-round((lpMemoryStatus.dwAvailPhys/1024)/1024); graph.Update(value1); uselabel.text:=inttostr(value1)+'/'+inttostr(value2);; end; |
|
#2
|
|||
|
|||
|
GlobalMemoryStatusEx
|
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
YVitaliy (02.03.2012)
| ||
|
#3
|
||||
|
||||
|
Спасибо. Просто я пользуюсь Delphi7, там таковой процедуры не имеется. Придется в этом случае работать на XE
А жаль. Привык к Борланду. |
|
#4
|
||||
|
||||
|
ну так объяви ее сам:
Код:
type
TMemoryStatusEx = record
dwLength: DWORD;
dwMemoryLoad: DWORD;
ullTotalPhys: Int64;
ullAvailPhys: Int64;
ullTotalPageFile: Int64;
ullAvailPageFile: Int64;
ullTotalVirtual: Int64;
ullAvailVirtual: Int64;
ullAvailExtendedVirtual: Int64;
end;
function GlobalMemoryStatusEx(var lpBuffer: TMemoryStatusEx): Boolean; stdcall; external kernel32; |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
YVitaliy (02.03.2012)
| ||
|
#5
|
||||
|
||||
|
Цитата:
|