String anhand von Pointer auslesen

07/28/2013 14:20 niwi#1
Hey,
ich versuche grade verzweifelt einen string mit _MemoryPointerRead auszulesen. Mein script sieht bisher so aus:
PHP Code:
$Address 0x003E68C8
Dim $Offsets
[2]
$Offsets[0] = 0x0
$Offsets
[1] = 0x50
$iv_Pid 
ProcessExists("NostaleX.dat")
$handle _MemoryOpen($iv_Pid)
$a_value _MemoryPointerRead($Address$handle$Offsets"CHAR[10]")
MsgBox(1,"",$a_value[1]) 
Allerdings bekomme ich als Rückgabewert im moment nur einen Fehler.
Woran kann das liegen?
07/28/2013 14:46 -STORM-#2
WinGetProcess sucht ein Fenster mit einem bestimmten Titel und gibt den Prozess zurück, zu dem dieses Fenster gehört.
Um einen Prozess anhand des Namens der .exe zu bekommen, benutzt man:
Code:
$iv_Pid = ProcessExists("programm.exe")
07/28/2013 14:53 niwi#3
Ich hab das jetzt geändert, aber bekomme nun gar keinen Wert zurück die Msg box ist leer. kann es sein das man die Offsets oder die Pointeradress anders angeben muss oder so ?
07/28/2013 14:57 -STORM-#4
Ich meine, irgendwo mal gelesen zu haben, dass die Pointer Funktionen auf manchen Systemen, insbesondere unter 64bit, nicht richtig laufen.
Bist du denn sicher, dass die Adresse und die Offsets richtig sind, bzw. funktioniert es in CE damit?
Poste am besten mal einen Screen vom Pointer in CE.

Achja, und bau Exception Handling ein. D.h. nach jedem Befehl, der schief gehen kann, frag @error ab und gib den Fehler gegebenenfalls per Msgbox oder Debug Console aus.
Wenn WinGetProcess und MemoryOpen keine Fehler melden, ist das Problem zumindest auf MemoryPointerRead begrenzt.
07/28/2013 15:17 FacePalmMan#5
1. #include <MemoryPointer>
2. ersetz MsgBox(1,"",$a_value[1]) mit MsgBox(1,"",$a_value[1]&@CRLF&@error) und sag uns was in der zweiten zeile der msgbox steht.
3. sichergehen ,dass der richtige prozess bei WinGetProcess angezapft wird
07/28/2013 17:59 niwi#6
Erstmal danke für die vielen antworten :)
Also ich weiß auf jedenfall das der Handle funktioniert, da ich es schon geschafft habe den Wert mit _memoryread auszulesen.
Es wird also wahrscheinlich am Pointer oder an den Offsets liegen.
Hier mal der Pointer in CE :

[Only registered and activated users can see links. Click Here To Register...]

Ich weiß das der Pointer an sich stimmt, da er nach jedem neustart des Programms den Wert richtig anzeigt. hab ich ihn vielleicht irgendwie falsch angegeben?
07/28/2013 18:05 KDeluxe#7
Code:
$a_dwOffset[3] = [0, 0x50, 0]