In der PythonWin idle ausgeführt
Natürlich findet er das "Solitär" fenster auf diese Weise nicht wegen des Ä
Code: Alles auswählen
import ctypes, struct, win32api, win32process
>>> import win32ui
>>> PROCESS_ALL_ACCESS = 0x1F0FFF
>>> HWND = win32ui.FindWindow(None,"Soldat").GetSafeHwnd()
>>> PID = win32process.GetWindowThreadProcessId(HWND)[1]
>>> PROCESS = win32api.OpenProcess(PROCESS_ALL_ACCESS, 0, PID)
>>> readProcessMemory = ctypes.windll.kernel32.ReadProcessMemory
>>> STATUSBAR_TEXT = 0x0076D928
>>> status_text = ctypes.create_string_buffer(64)
>>> readProcessMemory(PROCESS.handle,STATUSBAR_TEXT,status_text,64,0)
1
>>>
und das gleiche für Solitär! Lediglich die PID habe ich manuell zugewiesen.
Code: Alles auswählen
PID = 2136
>>> PROCESS = win32api.OpenProcess(PROCESS_ALL_ACCESS, 0, PID)
>>> readProcessMemory = ctypes.windll.kernel32.ReadProcessMemory
>>> STATUSBAR_TEXT = 0x0076D928
>>> status_text = ctypes.create_string_buffer(64)
>>> readProcessMemory(PROCESS.handle,STATUSBAR_TEXT,status_text,64,0)
0
Dieser Code:
Code: Alles auswählen
import ctypes, win32ui, win32process
PROCESS_ALL_ACCESS = 0x1F0FFF
HWND = win32ui.FindWindow(None,"Soldat").GetSafeHwnd()
PID = win32process.GetWindowThreadProcessId(HWND)[1]
PROCESS = ctypes.windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS,False,PID)
rPM = ctypes.windll.kernel32.ReadProcessMemory
wPM = ctypes.windll.kernel32.WriteProcessMemory
ADDRESS1 = 0x00B97D5C
ADDRESS2 = ctypes.create_string_buffer(64)
rPM(PROCESS,ADDRESS1,ADDRESS2,64,None)
print(ADDRESS2)
input()
Gibt diese Ausgabe:
Der Wert der Adresse aus ADDRESS1 beträgt 31 laut des Memoryviewers. Alt +31 = ▼

WIe wandel ich diesen Zeichen in eine Hexzahl oder Integer um? Warum bekomme ich überhaupt ein Ascii zeichen statt des Hexcodes ausgegeben?
Warum das ganze mit SOlitär nicht funktioniert ist mir ein Rätsel!