Hallo an alle,
Ich versuche seit mehreren Tagen herauszubekommen wie ich mit AutoIt die xy-coords aus einem Spiel auslesen kann. Habe ein Script gefunden mit dem man in den Speicher schreiben und ihn lesen können sollte, bekomme es aber nicht zum laufen. Hoffentlich weiß jmd. Rat. Hier noch das Script :
Code
#include-once
$size = 0
;--Memory Functions--
Func _OpenProcess($hWnd)
Local $pid = DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $hWnd, "int_ptr", 0)
If IsArray($pid) Then
$pid = $pid[2]
Else
SetError(-1)
Return
EndIf
Local $pHandle = DllCall("kernel32.dll", "int", "OpenProcess", "int", 0x10, "int", 0, "int", $pid)
If IsArray($pHandle) And $pHandle[0] > 0 Then
$pHandle = $pHandle[0]
Else
SetError(-2)
Return
EndIf
Return $pHandle
EndFunc
Func _CloseHandle($pHandle)
DllCall("kernel32.dll", "int", "CloseHandle", "int", $pHandle)
EndFunc
Func _ReadMemory($pHandle, $Address, $size)
Local $ret = DllCall("kernel32.dll", "int", "ReadProcessMemory", "int", $pHandle, "int", $Address, "int_ptr", 0, "int", $size, "int", 0)
If IsArray($ret) Then
If $ret[0] = 1 Then
$ret = $ret[3]
Else
SetError(-2)
Return
EndIf
Else
SetError(-1)
Return
EndIf
Return $ret
EndFunc
Func _ReadString($pHandle, $Address, $length)
Local $ret, $tmpStr = ""
For $i = 0 To $length - 1
$ret = DllCall("kernel32.dll", "int", "ReadProcessMemory", "int", $pHandle, "int", $Address + $i, "int_ptr", 0, "int", 1, "int", 0)
If IsArray($ret) Then
If $ret[0] = 1 Then
If $ret[3] > 0 Then
$tmpStr = $tmpStr & Chr($ret[3])
Else
ExitLoop
EndIf
Else
SetError(-2)
Return
EndIf
Else
SetError(-1)
Return
EndIf
Next
Return $tmpStr
EndFunc
Func _WriteMemory($pHandle, $Address, $value, $size)
Local $ret = DllCall("kernel32.dll", "int", "WriteProcessMemory", "int", $pHandle, "int", $Address, "int_ptr", $value, "int", $size, "int", 0)
If IsArray($ret) Then
If $ret[0] = 1 Then
Return True
Else
SetError(-2)
Return False
EndIf
Else
SetError(-1)
Return False
EndIf
Return True
EndFunc
Func _WriteString($pHandle, $Address, $string)
Local $ret, $value
Local $length = StringLen($string)
For $i = 0 To $length
If $i = $length Then
$value = 0
Else
$value = Asc(StringMid($string, $i, 1))
EndIf
$ret = DllCall("kernel32.dll", "int", "WriteProcessMemory", "int", $pHandle, "int", $Address + $i, "int_ptr", $value, "int", $size, "int", 0)
If IsArray($ret) Then
If $ret[0] = 0 Then
SetError(-2)
Return False
EndIf
Else
SetError(-1)
Return False
EndIf
Next
Return True
EndFunc
SLeep(20000)
$hWnd = WinGetHandle("WORLD OF WARCRAFT")
MsgBox(0, "What", ":"&$hWnd)
Alles anzeigen
Edit peerthebee:
Code sauber formatieren lassen.