Consultor Eletrônico



Kbase P38580: How to know how many Memory is Available programmatically from 4GL?
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   12/17/2004
Status: Unverified

GOAL:

How to know how many Memory is Available programmatically from 4GL?

GOAL:

How to know how many Memory is Available?

FACT(s) (Environment):

Windows 32bit

FIX:

This sample program will display:
1. Total Memory of the system.
2. Percent of ressources used.
3. Total of Free Memory.
4. Total of Swap Memory.

DEFINE VARIABLE lpmemorystatus AS MEMPTR.
DEFINE VARIABLE lpsysteminfo AS MEMPTR.
DEFINE VARIABLE PctMemInUse AS INTEGER NO-UNDO.
DEFINE VARIABLE SwapFree AS INTEGER NO-UNDO.
DEFINE VARIABLE TotPhysMem AS INTEGER NO-UNDO.
DEFINE VARIABLE FreePhysMem AS INTEGER NO-UNDO.

DO:
SET-SIZE(lpmemorystatus) = 32.
PUT-LONG(lpmemorystatus,1) = 32.
SET-SIZE(lpsysteminfo) = 40.

RUN GlobalMemoryStatus (INPUT-OUTPUT lpmemorystatus).

pctmeminuse = GET-LONG(lpmemorystatus,5).
TotPhysMem = GET-LONG(lpmemorystatus,9) / 1024.
FreePhysmem = GET-LONG(lpmemorystatus,13) / 1024.
SwapFree = GET-LONG(lpmemorystatus,21) / 1024.

MESSAGE "Total Physical Memory : " TRIM(STRING(TotPhysMem, ">>>,>>>,>>9 Kb")) SKIP
"Total Memory in Use : " pctmeminuse "%" SKIP
"Total Free Memory : " TRIM(STRING(FreePhysmem, ">>>,>>>,>>9 Kb")) SKIP
"Free Swap Memory : " TRIM(STRING(SwapFree, ">>>,>>>,>>9 Kb"))
VIEW-AS ALERT-BOX.


SET-SIZE(lpmemorystatus) = 0.
SET-SIZE(lpsysteminfo) = 0.

END.

procedure GlobalMemoryStatus external "kernel32.dll":
define input-output parameter lpmemorystatus as memptr.
end.