windows2000 이후 버전의 win-API에서 제공되는 MemoryStatusEx를 통하여 memory 상태를 체크할려고 하는데.. windows.pas에서는 아직 지원이 되지않고 있네요..
그래서 kernel32.dll에서 MemoryStatusEx 를 바로 불러서 사용할려고 하는데.. 그 방법을 모르겠습니다..
혹시 아는 분 계시면 좀 갈켜주세요.. ^^
굳이 MemoryStatusEx를 사용할려고 하는 이유는
메모리가 4G 이상일경우 MemoryStatus가 인식을 못한다는 거에요..
메모리가 4G 이상일경우에는 windows2000이후버전에서만 지원되는 MemoryStatusEx를 사용해야만 메모리 상태를 알수 있다는 거죠..
var
Form1: TForm1;
_GlobalMemoryStatusEx: TGlobalMemoryStatusEx;
function GlobalMemoryStatusEx(lpBuffer: PMEMORYSTATUSEX): BOOL; stdcall;
implementation
{$R *.dfm}
function GlobalMemoryStatusEx;
begin
if Assigned(_GlobalMemoryStatusEx) then
Result:=_GlobalMemoryStatusEx(lpBuffer)
else
Result:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MSEX :TMemoryStatusEx;
begin
@_GlobalMemoryStatusEx:=GetProcAddress(GetModuleHandle('kernel32'),PChar('GlobalMemoryStatusEx'));
ZeroMemory(@MSEX,SizeOf(MSEX));
MSEX.dwLength:=SizeOf(MSEX);
GlobalMemoryStatusEx(@MSEX);
Label1.Caption := Format('Memory: %d MB',[MSEX.ullTotalPhys div 1024 div 1024]);
end;
제가 사용하는건 델파이5.0인데..에러메시지가
[Fatar Error] Variants.dcu not found라고 나더라구요.
그래서 아래 uses중 Variants 지우고 하니깐 잘 되네요..
없어도 되는 건지 궁금해서 다시 글을 올립니다...
그럼 시원한 하루되세요.. ^^
windows2000 이후 버전의 win-API에서 제공되는 MemoryStatusEx를 통하여 memory 상태를 체크할려고 하는데.. windows.pas에서는 아직 지원이 되지않고 있네요.. 그래서 kernel32.dll에서 MemoryStatusEx 를 바로 불러서 사용할려고 하는...
박상기
•
2002.08.06 09:25
MemoryStatus를 안쓰고 굳이 MemoryStatusEx를 쓰시고자 하는 이유가 있어요?
공문선
•
2002.08.06 18:53
굳이 MemoryStatusEx를 사용할려고 하는 이유는
메모리가 4G 이상일경우 MemoryStatus가 인식을 못한다...
홍성락
•
2002.08.06 19:20
hsr/////////////////////////////////////////////////////////////
그럼 이렇게 써보세요.......
unit ...
공문선
•
2002.08.07 02:50
정말 고맙습니다..
제가 사용하는건 델파이5.0인데..에러메시지가
[Fatar Error] Variants.dcu not fo...
홍성락
•
2002.08.07 03:42
hsr/////////////////////////////////////////////////////
참조가 되셨다니 다행입니다.
저도 잘 모...
홍성락
•
2002.08.06 08:29
hsr/////////////////////////////////////////////////////////
GlobalMemoryStatus이 함수를 사용해보시...
MemoryStatus를 안쓰고 굳이 MemoryStatusEx를 쓰시고자 하는 이유가 있어요?