Hi,
Die Variable deren Adresse ich mit Cheat-engine suche ist eine Float variable. Wenn ich die Adresse mit AutoIT einlese interpretiert er es allerdings als 4Byte und bringt ein total falsches Ergebnis. Da man nur Variablen mit dem Typ variant deklarieren kann wollte ich fragen ob man ein 4Byte auch in einen Float umrechnen kann.
Du ließt den Wert vermutlich über _MemoryRead() oder _MemoryPointerRead() aus. Du musst den Parameter $sv_Type einfach auf "float" ändern, standardmäßig ist dieser "DWORD".
Wenn du ReadProcessMemory per DllCall benutzen solltest, sollte es in etwa so aussehen:
ich meine welchen befehl muss ich benutzen um die Speicheradresse so auszulesen, das es mir den richtigen Wert (also float) ausgibt.
Muss das _MemoryRead() oder _MemoryPointerRead() oder ReadProcessMemory sein? Ich kenn mich da leider nicht aus
_MemoryRead() und _MemoryPointerRead() sind UDFs (User Defined Functions), welche die Benutzung erleichtern sollen.
_MemoryRead() ließt einfach nur den Wert einer Adresse.
_MemoryPointerRead() ermöglicht dir einfaches auslesen eines Pointers, zusätzlich zur Adresse musst du noch Offsets angeben.
Beide Funktionen findest du in der "NomadMemory.au3" bzw. der "Pointer.au3", diese findest du mit Google.
Du musst jeweils den letzten Parameter auf Float setzen:
Den manuellen DllCall() kannst du dir sparen.Wirklich falsch ist nichts, aber gut ist es dennoch nicht. Du solltest zumindest immer überprüfen, ob du ein gültiges Handle hast.
Hier mal ein Beispiel:
Code:
#include <NomadMemory.au3>
$dwAddress = 0x00FBF314
$szProcessName = "BF2.exe"
$dwProcessId = ProcessExists($szProcessName)
If $dwProcessId > 0 Then
$Handle = _MemoryOpen($dwProcessId)
If Not @error Then
$rData = _MemoryRead($Handle, $dwAddress, "float")
If @error Then
MsgBox(48, "Fehler", "Lesen des Speichers fehlgeschlagen." & @CRLF & "Fehlercode: " & @error)
Else
MsgBox(64, "Info", "Adresse: " & $dwAddress & @CRLF & "Wert: " & $rData)
EndIf
Else
MsgBox(48, "Fehler", "Auf " & $szProcessName & " konnte nicht zugegriffen werden." & @CRLF & "Fehlercode: " & @error)
EndIf
Else
MsgBox(48, "Fehler", "Starte " & $szProcessName)
EndIf
Du kannst das Script ja mal ausführen und schreiben, woran es scheitert.
8 byte anzeigen in Autoit 08/09/2010 - AutoIt - 3 Replies hi!
hab jetzt 2 Std google hinter mir und nichts sinnvolles gefunden, meine Frage is:
Wie kann ich in Autoit 8byte anzeigen lassen
dword = 4 byte
long = 4 byte
int = 4 byte
gibts da was für 8 byte? In der nomadmemory steht dazu auch nichts