AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ReadProcessMemory (XE2 Problem)

Ein Thema von neuronet · begonnen am 3. Feb 2012 · letzter Beitrag vom 3. Feb 2012
Antwort Antwort
Benutzerbild von neuronet
neuronet

Registriert seit: 16. Aug 2005
Ort: Berlin
104 Beiträge
 
Delphi 2010 Architect
 
#1

ReadProcessMemory (XE2 Problem)

  Alt 3. Feb 2012, 13:44
Folgender Code zum auslesen eines Strings aus dem Speicher einer anderen Anwendung funktioniert unter Delphi XE Architect einwandfrei:

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  mem_addr: integer;
  Wert: UInt;
  name: string;
  Data: PWideChar;

begin
  OPEN_PROCESS;
  mem_addr := PointerSolve(process_handle, Mem_Text1);
  RichEdit1.Clear;
  name := '';
  GetMem(Data, 10000);
  ReadProcessMemory(process_handle, ptr(mem_addr), Data, 10000, Wert);
  name := WideCharToString(Data);
  RichEdit1.Text := name;
  mem_addr := PointerSolve(ao_handle, Mem_Text2);
  RichEdit2.Clear;
  name := '';
  GetMem(Data, 10000);
  ReadProcessMemory(preocess_handle, ptr(mem_addr), Data, 10000, Wert);
  name := WideCharToString(Data);
  RichEdit2.Text := name;
  CLOSE_PROCESS;
end;
Beim Compiliren unter XE2 Architect bekomme ich folgende Fehlermeldung:

Code:
[DCC Fehler] TextReader.pas(58): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Was mache ich daran falsch?

Der Fehler bezieht sich auf den "ReadProcessMemory" Aufruf.
Andreas
--- Der Wert der Leistung liegt im Geleisteten --- Albert Einstein

Mein erstes Baby: Apple I - Der Rechner ist genauso alt wie ich... Und steht noch immer im Keller...

Geändert von neuronet ( 3. Feb 2012 um 13:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von neuronet
neuronet

Registriert seit: 16. Aug 2005
Ort: Berlin
104 Beiträge
 
Delphi 2010 Architect
 
#2

AW: ReadProcessMemory (XE2 Problem)

  Alt 3. Feb 2012, 13:48
Okay... War wohl etwas voreilig...

Es lag an einer nicht identischen Variablendeklaration:

Code:
var
  mem_addr: integer;
  Wert: NativeUInt;
  name: string;
  Data: PWideChar;
ReadProcessMemoery erwartet als Typ NativeUInt und nicht den normalen UInt
Andreas
--- Der Wert der Leistung liegt im Geleisteten --- Albert Einstein

Mein erstes Baby: Apple I - Der Rechner ist genauso alt wie ich... Und steht noch immer im Keller...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#3

AW: ReadProcessMemory (XE2 Problem)

  Alt 3. Feb 2012, 14:06
mem_addr als Integer kann auch nicht ganz stimmen.
(vorllam wenn es mal auf 64 Bit zu geht)

Denn der Integer wächst nicht mit und dann paßt kein Pointer dort mehr rein.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz