Wie Croco™ schon gesagt hat gibt die Funktion ein Array zurück. $pid und $handle global zu machen bringt hier nichts, außerdem solltest du darauf achten, was die Funktionen für Rückgabewerte und/oder Fehlercodes zurück geben.
Mein Beispielscript ist nicht so "groß" nur damit es nach mehr aussieht, es hat alles einen Sinn. Die detaillierten Fehlercodes habe ich ebenfalls nicht sinnlos gemacht.
Mein Beispielscript kann mit drei kleinen Änderungen (Prozessname, Adresse, Offsets) an jede Anwendung angepasst werden. Mit abweichendem Modulnamen wären es vier Änderungen.
Falls du etwas testen möchtest empfehle ich dir mein Beispielscript nach deinen Belangen anzupassen, dieses ist fehlerfrei und gibt dir sämtliche Fehler aus.
Code:
#AutoIt3Wrapper_UseX64=n ; 32 Bit application
;~ #AutoIt3Wrapper_UseX64=y ; 64 Bit application
#RequireAdmin
#include "KDMemory.au3"
Const $processName = "javaw.exe", $moduleName = "jvm.dll"
Const $baseOffset = 0x00007AB4
Const $offsets[1] = [0x688, 0x1D8, 0x20, 0x14, 0xC]
$processId = ProcessExists($processName)
If $processId == 0 Then
MsgBox(48, "Error", "'" & $processName & "' is not running!")
Else
$handles = _KDMemory_OpenProcess($processId)
If @error Then
MsgBox(48, "Error", "Can't open '" & $processName & "'! @error: " & @error)
Else
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $baseOffset
If @error Then
MsgBox(48, "Error", "Can't get ModuleBaseAddress ('" & $moduleName & "')! @error: " & @error & ", @extended: " & @extended)
Else
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD", $offsets)
If @error Then
MsgBox(48, "Error", "Can't read memory! @error: " & @error & ", @extended: " & @extended)
Else
MsgBox(64, "Info", "Address: " & $memoryData[0] & @CRLF & "Value: " & $memoryData[1])
EndIf
EndIf
_KDMemory_CloseHandles($handles)
EndIf
EndIf
Solche kleinen Fragen kannst du auch in meinem Thread stellen.