Hallo zusammen,
ich habe mich letztens mal hinter DllCalls geklemmt und wollte versuchen zu verstehen was es damit auf sich hat. Ich denke das ist mir klar geworden, aber ich habe leider gar keine Ahnung woher immer alle wissen was in den jeweiligen .dll's für Funktionen enthalten sind. Mittlerweile schaue ich bei MSDN immer via Stichwortsuche ... RAM eines Prozesses auslesen -> ReadProcessMemory nur komme ich dort zu meinem zweiten Problem. Ich möchte ein Script schreiben, mit dem ich einen Prozess überwache und alle 60 Sekunden den Ram auslese und die Infos in eine Datei schreiben lasse ... mein Problem:
wo kriege ich bei einem
[autoit]_WinAPI_ReadProcessMemory($hProcess, $pBaseAddress, $pBuffer, $iSize, ByRef $iRead)
[/autoit]die restlichen Informationen her? $hProcess könnt ich mir die ProzessID vorstellen aber der Rest
Bei:
; retrieve memory infos of the current running process
Local $mem = ProcessGetStats(4480)
For $i = 0 To UBound($mem) - 1
ConsoleWrite($mem[$i] & @CR)
Next
; retrieve IO infos of the current running process
Local $IO = ProcessGetStats(4480, 1)
ConsoleWrite(@CR)
For $i = 0 To UBound($IO) - 1
ConsoleWrite($IO[$i] & @CR)
Next)
kriege ich jetzt zwar etwas rausgeschrieben aber leider net den erwünschten Arbeitsspeicherverbrauch (Seitenfehler, Zugesichert, Arbeitssatz, Freigabe Möglich, Privat). Angeblich kriege ich das via:
[autoit]Local $i_PID = 4480
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'ReadProcessMemory', "hwnd", $i_PID)
If @error <> 0 Then
MsgBox(0,"",@error)
Exit 0
EndIf
MsgBox(0,"",UBound($ai_Handle))
For $i = 0 To UBound($ai_Handle) - 1
ConsoleWrite($ai_Handle[$i] & @CR)
Next
raus, nur dort stürzt mein AutoIt jedesmal ab
Könnte mir fix jemand helfen? Möchte mein momentanes Projekt damit überwachen lassen da ich glaube einige Speicherleaks gefunden zu haben
Für die die nicht wissen welche Infos ich meine: Task-Manager -> Lesitungen -> Ressourcenmonitor -> Arbeitsspeicher
Grüße