Entwickler-Ecke
Windows API - String in einer Anwendung suchen und editieren
K-J - Di 03.06.08 06:44
Titel: String in einer Anwendung suchen und editieren
Hallo!
Ich habe wieder ein Anfängerproblem und es wäre wirklich super, wenn mir jemand dabei helfen könnte...
Ich möchte in meinem Programm eine Funktion einbauen, die in einer Anwendung einen bestimmten String bzw. eine bestimmte HEX-Kette aufspürt und dann die HEX-Kette umschreibt.
Also ganz grob etwa nach folgendem Muster:
"Finde String 01F53C71FF23 und ersetze ihn durch 5590F2E13329"
Könnte mir das eventuell jemand in die Delphi-Sprache umsetzen, damit ich eine Vorlage habe, wenn es nicht zu viel verlangt ist?
Gruß
K-J
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 03.06.2008 um 23:25
GericasS - Di 03.06.08 06:57
Ich glaube da gibt es eine Möglichkeit StringReplace =) einfach mal hinschreiben und F1 drücken.
ZeitGeist87 - Di 03.06.08 09:36
Und ich werf mal noch
POS in den Raum ;-)
Achja..
if blablabla then ist auch nicht zu verachten.
LG
Stefan
K-J - Di 03.06.08 18:27
Ich habe mir das mit der StringReplace-Funktion eben gerade mal angeschaut, aber irgendwie bekomme ich das nicht hin (ich befinde mich immernoch auf einem extremen Anfänger-Niveau).
Also mal angenommen, es läuft ein Programm mit dem Window-Titel "Programm1". Nun öffne ich das Programm in einem HEX-Editor, finde einen bestimmten String (z.B. "ABC") und möchte diesen String immer durch "DBC" ersetzen.
Nun möchte ich das aber nicht jedes Mal manuell mit einem HEX-Editor machen, sondern ich möchte, dass mein Delphi-Programm das per Hotkey automatisch macht.
Dazu habe ich dann (bezugnehmend auf "StringReplace") eben gerade mal folgenden Code erstellt, wobei ich glaube, dass ich mir da ein ziemliches Wirrwarr zusammengebastelt habe: :oops:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; WindowName: integer; ProcessID: integer; ThreadId: integer; HandleWindow: Integer;
Const WindowTitle = 'Programm1';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var ABC: String;
begin WindowName := FindWindow(nil,WindowTitle); If WindowName = 0 then MessageDlg('Window not found', mtwarning,[mbOK],0); ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ABC := StringReplace(ABC, 'A', 'D', [rfReplaceAll]); If ABC = 'DBC' then MessageDlg('String patched', mtinformation,[mbOK],0) else MessageDlg('String not found', mtwarning,[mbOK],0); end;
end. |
Ich bekomme dann immer die Message "String not found"...
Sorry, dass ich mich so dumm anstelle, aber etwas mehr Hilfe wäre wirkch nett.
Gruß
K-J
fuba - Sa 07.06.08 10:50
also das müsstest schon genauer erklären...
der string den du ändern willst, ist in einer fremden anwendung, habe ich das richtig verstanden?
Wenn ja, dann müsste man wissen, in welchem "unterfenster" dieser steht (editbox, label, usw...)
sollte das so sein, dann solltest du dir
SENDMESSAGE bzw
POSTMESSAGE ansehen.
Aber einen "einfachen" Befehl wie "StringReplace" gibt es für Externe anwendungen nicht, das währe dann schon bisschen komplizierter ;)
hoffe ich habe dich da jetzt nicht falsch verstanden.
lg. fuba
Hidden - Sa 07.06.08 11:07
Hi,
fuba hat folgendes geschrieben: |
müsste man wissen, in welchem "unterfenster" dieser steht (editbox, label, usw...) |
K-J hat folgendes geschrieben: |
Nun öffne ich das Programm in einem HEX-Editor |
Wie ich das verstehe soll der Speicher der Anwendung nach der
des Strings durchsucht werden.
Ich finde übrigens, dass das absolut kein Anfänger-Niveau ist :wink: und nach deinem Quelltext zu urteilen kennst du dich entweder auch schon mit der Syntax von Delphi und entsprechenden Methoden aus
oder bist in der Lage, Hilfe und Suchfunktion zu benutzen.
10.000 Punkte in dem Fall :wink:
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!