So, Vorneweg: Ich kann kein Wort Delphi!
| Zitat: |
GetWindowThreadProcessId(c,@c)
|
Bei GetWindowThreadProcessId ist der erstze Parameter ein Handle auf ein Fenster, das scheint richtig zu sein - der zweite Parameter soll aber die Adresse einer Variablen sein, die die PID aufnimmt. Hier übergibts du (wenn ich es richtig sehe) wieder die Adresse, auf der schon das Handle des Fensters gespeichert hast. Das würde ich nicht tun.
| Zitat: |
OpenProcess(PROCESS_ALL_ACCESS,False,c)
|
Man öffnet einen Prozess nicht mit mehr Rechten, als man benötigt. Das ist unfein und haut einem seinen Code in einem Account mit eingeschränkten Rechten um die Ohren.
| Zitat: |
ReadProcessMemory(c,Ptr(Adresse),buf,NumberOfBytes,write)
|
Wenn du die Adresse direkt Auslesen willst, musst du sie auch als Parameter 2 direkt übergeben und keinen Pointer auf die Adresse.
Der Datentyp von buf scheint nicht zu passen. Hier musst du als dritten Parameter die Adresse einer Variablen übergeben, die mindestens die Anzahl an Bytes groß sein muss, die du auslesen möchtest (bei dir wären das ja 8).
Als letzter Parameter muss ebenfalls die Adresse einer Variablen übergeben werden, und nicht deren Inhalt.
Will hoffen, dass ich die Sache richtig deute. Kann, wie gesagt, kein bischen Delphi. Vielleicht findet sich ja auch noch jemand anders.
Gruß
AHT