Entwickler-Ecke

Windows API - WriteProcessMemory Header


glotzer - Mi 17.10.12 18:28
Titel: WriteProcessMemory Header
Hallo,


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  hProcess          : THandle;
  DLLPath           : Ansistring;
  pDLLPath          : Pointer;
  BytesWritten      : Cardinal;

begin

WriteProcessMemory(hProcess, pDLLPath, PAnsiChar(DLLPath), Length(DLLPath), BytesWritten);


Der Code hat unter Delphi 7 funktioniert, tut dies allerdings nicht unter XE3.

Zitat:
[dcc32 Fehler] E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen


leider habe ich den Code des Unit Windows nicht, die Docu ist sich zu schade etwas darüber zu schreibenn und
Zitat:
Parameter
hProcess:Void-Typ
lpBaseAddress:System.Pointer
lpBuffer:System.Pointer
nSize:Void-Typ
lpNumberOfBytesWritten:Void-Typ

was die IDE bei Maus-drüber-halten sagt hilft mir leider auch nicht. Könnte jemand kurz nachschauen was der entsprechende Header ist, oder weiß jemand was ich falsch mache? Bin jetzt nach 2 Tagen am verzweifeln.

Vielen Dank
Glotzer


Boldar - Mi 17.10.12 21:29

Hi,
Ohne mich mit XE3 auszukennen:
Probier mal das:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  hProcess          : THandle;
  DLLPath           : Ansistring;
  pDLLPath          : Pointer;
  BytesWritten      : Cardinal;

begin

WriteProcessMemory(hProcess, pDLLPath, Addr(DLLPath), Length(DLLPath), BytesWritten);


glotzer - Mi 17.10.12 22:26

leider selber Fehler ;(


mandras - Mi 17.10.12 23:16

Delphi XE2: folgendes funktioniert:


Delphi-Quelltext
1:
2:
3:
4:
5:
var
  hProcess          : THandle;
  DLLPath           : Ansistring;
  pDLLPath          : Pointer;
  BytesWritten      : SIZE_T;


glotzer - Do 18.10.12 17:23

Vielen Dank, du hast mir sehr geholfen und wahrscheinlich meine Nerven gerettet