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.