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:
ho provato tutti i valori della struttura PROCESS_MEMORY_COUNTERS, ma addiritura gli altri sono anche più alti...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
dove sta l'inghippo?!
:rollo:

Rispondi quotando