Wert eines Pointers auslesen...

04/30/2012 00:00 ˏ˖→»[ற4ЯCø]«←˖ˏ™#1
Hallo,

Ich möchte die Value von 0x003241(nur ein beispiel) auslesen,
wenn der wert auf 1 oder 0 ist soll eine Funktion gemacht werden,
die funtion ist hier mal MsgBox("Wert = 0/1", "Der der ist jetzt 0 oder 1").

Ich nehme an der script ist nicht länger als 30 Zeilen, da ich mich mit autoit nicht so gut auskenne würde ich mich freuen wenn einer von euch das für mich machen würde :D

MfG
Marco
04/30/2012 08:34 Mr.Help#2
Mit Pointer meinst du deine mauszeiger oder du willst das wenn er eine andere farbe hat soll er was machen oder weil 0x003241 ist ein farb wert.

KP wenn du so was meinst.

Code:
$Farbe1 = ("0x003241")
$Farbe2 = ("1x003241")

if PixelSearch = $Farbe1 Then
   ;mach dies und das
   
elseif PixelSearch = $Farbe2 Then
   ;Wenn farbe 1 nicht da ist mach dies und das
   
else 
   ;Wenn keine farbe da ist dann mach dies und das
   
   EndIf
Sag einfach mal wo genau du das auslesen willst
04/30/2012 11:03 Lawliet#3
Mit 0x0.. meint er keine Farbe, sondern eine Speicheradresse. Warum der Pointer aber 0 oder 1 beinhalten sollte, weiß ich auch nicht.
Naja, den Speicherwert kannst du mit
Code:
_WinAPI_ReadProcessMemory
Code:
Parameters
$hProcess	Identifies an open handle of a process whose memory is read
$pBaseAddress	Points to the base address in the specified process to be read
$pBuffer	Points to a buffer that receives the contents from the address space
$iSize	Specifies the requested number of bytes to read from the specified process
$iRead	The actual number of bytes transferred into the specified buffer
Auslesen. Ein ganzes Script kann dir hier niemand machen, da du nichtmal den Prozess o.ä. angegeben hast.
04/30/2012 11:59 SwarN#4
Hier mal ein Beispielcode,
als Process musst du natürlich dein Prozess eingeben den du haben möchtest, einzusehen unter Taskmanager -> Prozesse.
Bei mir ist das halt in dem Beispiel "game.exe"

Code:
#include <NomadMemory.au3>

Global $HPID =_MemoryOpen(ProcessExists("game.exe"))

If Not @error Then
   $Adresse=0x000123
   $ReadErgebnis=_MemoryRead($Adresse, $HPID, 'dword')
   MsgBox(0, "Dein Read Ergebnis", $ReadErgebnis)
EndIf
Die NomadMemory Datei hab ich dir mit angehängt, einfach dort einfügen wo du auch dein Script drin hast.
04/30/2012 12:21 K1ramoX#5
Wobei du aufpassen musst dass dein Datentyp hinhaut. Nicht dass du einen Float Wert vergleichen willst, aber einen dword auslesen tust ;O
04/30/2012 14:09 SwarN#6
ein float wird wohl kaum 1 oder 0 sein,
genausowenig wie ein double,

es liegt also nahe dass es ein Byte, 2 byte oder 4 byte ist.

Letzendlich hab ich ihm denke ich eh schon mehr wie vernüftig mit meinem Codebeispiel geholfen :), den rest muss er sich einfach selbst zusammenstückeln oder er müsste mehr Informationen liefern :)
05/01/2012 13:09 lolkop#7
sieht man mal davon ab, wenn der wert nur 0 oder 1 sein kann, kann er ja einfach auf 0 checken, da 0 in jedem datentyp 0 entspricht^^