non funziona però...mi dà sempre 20-30 Mb in più di quanto ha veramente il processo.
sempre ammesso che il programma "gestione attività" di windows vista, che indica tutti i processi in corso, stabilisca correttamente le dimensioni dell'assorbimento Ram dei vari processi.

questo è il codice usato:

codice:
questa sta nel modulo:
Public Type PROCESS_MEMORY_COUNTERS
  cb As Long
  PageFaultCount As Long
  PeakWorkingSetSize As Long
  WorkingSetSize As Long
  QuotaPeakPagedPoolUsage As Long
  QuotaPagedPoolUsage As Long
  QuotaPeakNonPagedPoolUsage As Long
  QuotaNonPagedPoolUsage As Long
  PagefileUsage As Long
  PeakPagefileUsage As Long
End Type
Public PID As Long, hProc As Long, proc As PROCESS_MEMORY_COUNTERS
Public Const PROCESS_TERMINATE = &H1
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const TH32CS_SNAPPROCESS = &H2

Public Function ControllaUsoRam(HWND_Finestra As Long)
Dim RETV As Long, RISULTATO As String
  RETV = GetWindowThreadProcessId(HWND_Finestra, PID)
  hProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, PID)
  RISULTATO = GetProcessMemoryInfo(hProc, proc, Len(proc))
  RISULTATO = "Uso Ram: " & AggiustaDimensioni(proc.WorkingSetSize)
  CloseHandle hProc
  ControllaUsoRam = RISULTATO
End Function

Public Function AggiustaDimensioni(DimBytes As Long) As String
  'da bytes in KB => bytes / 1024   =====   da bytes in MB => bytes / 1024 / 1024
  AggiustaDimensioni = FormatNumber(DimBytes / 1024 / 1024, 2, vbTrue, vbFalse, vbTrue) & " MB"
End Function

questa in una procedura di un form:
lblUsoRAM.Caption = ControllaUsoRam(Me.HWND): lblUsoRAM.Refresh
ho provato tutti i valori della struttura PROCESS_MEMORY_COUNTERS, ma addiritura gli altri sono anche più alti...
dove sta l'inghippo?!

:rollo: