Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
|
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
allerdings dachte ich mir auch, wenn es möglich wäre Zitat:
Aber mir gehen auch die Ideen aus. @All Wie blockiert das Programm ein "readprocessmemory" an der Einsprungadresse der WndProc? |
Re: Zugriff auf ein TImage einer externen Anwendung
Liste der Anhänge anzeigen (Anzahl: 2)
Wisst ihr was? HAUT MIT TOT!
Ich Intelligenzbolzen hab vergessen die dll mit rüber zu ziehen! @sirius: Du müsstest ggf. im Source den Label-Namen auf lbl2 ändern. Dürfte aber nur Communicate betreffen, oder? |
Re: Zugriff auf ein TImage einer externen Anwendung
Ich werds morgen mal änderbar machen (Label).
Was du da geschickt hast ist mysterious. Also sinnvoller Code ist es nicht. Demnach ist es nicht die wirkliche Adresse. Und da sie auch mit 4 "F"s anfängt, sieht es eher nach einer relativen Adresse aus. Aber wie geht denn das bei der wndProc? Wozu soll die relativ sein und woher weis windows das und überhaupt.... Fragen über Fragen. Also @all, was ist, wenn bei getwindowlong(handle,gwl_wndproc) eine (anscheinend) relative Adresse herauskommt ($FFFF0141); x sind irgendwelche ZahlenEdit: Man muss nur lesen! "Retrieves the address of the window procedure, or a handle representing the address of the window procedure." Und was mach ich jetzt mit dem Handle :gruebel:? Ich brauche doch die Adresse. Anscheinend zeigt das MSB an, dass es ein Handle ist (in den oberen 2GB kann ja eh nicht die WndProc liegen) jetzt muss ich $FFFF0141 (oder was auch immer da rauskommt) also negieren, dass wäre dann etwa $0000FEBF = 65215. Oder es bleibt halt bei etwas in die 4Mrd. Tja, und dann? "GetHandleInformation"? Ich such noch mal kurz ansonsten eröffne ich einen neuen Thread. Edit zum x-ten: Zitat:
|
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
War halt mein Fehler. |
Re: Zugriff auf ein TImage einer externen Anwendung
Ma ne Frage: Willst du das TImage Objekt haben, oder nur das Bild bekommen oder nur das Bild abändern. (Letztes geht viel einfacher)
|
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
|
Re: Zugriff auf ein TImage einer externen Anwendung
Es geht darum das Bild ggf. abzuändern, aber da man das eigentlich "einfach" Überzeichnen kann brauche ich gewisse Daten von den TImage-Objekten sprich ihre Position und Größe.
Aber wie sirius schon sagte, es führt kein Weg drum herum den Text der TLabel zu ermitteln, da ohne diesen Text ich auch nicht weiß was ich bei dem TImages ersetzen soll. |
Re: Zugriff auf ein TImage einer externen Anwendung
Also ich weiß nicht wo das Problem ist eine Dll in den Prozes zu laden und dann einfach einer Variable die Adresse der Form zuweisen.
Dann funktionieren alle Funktionen wie FindComponent usw. Die Adresse bekommt man durch Debuggen / Disassembling raus. Oder Man schreibt sich nen Parser das die Adresse im Speicher sucht. Ansonsten wenns ur um abändert gehen soll: Die Standart Hooks installieren wie BitBlt StretchBlt TextOut usw. dann kommt man an die Daten auch dran. |
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
Zitat:
Zitat:
PS: Zitat:
|
Re: Zugriff auf ein TImage einer externen Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, stimmt die VCL muss die selbe sein. Wenn man das Programm selbst hat sollte es durch debuggen kein Problem sein.
Für Delphi7 hab ich hier mal was gemacht, voller zugriff auf alle Forms (und deren Komponenten). Bisher nur als Compilat, benutzt viele kleine Units die ich mal geschrieben habe (wenns denn geht, kann ich das zu einem Projekt mal zusammenfassen) |
Re: Zugriff auf ein TImage einer externen Anwendung
Hm ok das wäre auch mal ne Möglichkeit zu testen, allerdings obliegt mir nicht die Möglichkeit die Datei um die es hier geht einfach in Project1.exe umzubenennen.
@brechi: Kannst du das nicht so machen, das man einen Dateiname (ggf. mit Pfad) übergeben kann und dann diese verwendet wird? |
Re: Zugriff auf ein TImage einer externen Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Hier die neue Exe, als Parameter muss sie die ProzessID übergeben bekommen.
Die andere dll wird noch gebraucht. |
Re: Zugriff auf ein TImage einer externen Anwendung
Hab gerade gesehen es geht noch um einiges einfacher.
Im ((EIP+0x18)^)^ befindet sich das Application Objekt. Da kommt man direkt an alle Forms und darüber an alle Bilder/Labels usw. |
Re: Zugriff auf ein TImage einer externen Anwendung
Hab das grad nochmal getestet und da passiert genau das was auch am Anfang des Threads zu diskussionen geführt hat, der Prozess wird gekillt ohne ein Wörtchen mitzuteilen.
Somit kann man das leider auch verwerfen, trozdem danke. |
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
@KoS: Nicht so schnell verwerfen. Ich vermute wir brauchen nur den richtigen Einstieg ins Programm, egal ob wir dann mit meiner oder mit brechis Methode weiter verfahren. |
Re: Zugriff auf ein TImage einer externen Anwendung
? Ich sach nur man kann das machen imho mach ich das per Patternscan, womit ichdirek an die Forms drankomme. Aber man braucht ja nur das application Objekt um wirklcih ALLES machen zu können. Und das befindet sich nahe am EIP beim Aufruf von application.initialize
|
Re: Zugriff auf ein TImage einer externen Anwendung
Ach du nimmst den EntryPoint und suchst da....
|
Re: Zugriff auf ein TImage einer externen Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die Methode über den EIP mit Source
|
Re: Zugriff auf ein TImage einer externen Anwendung
Auch nicht schlecht. Mal sehen ob es funktioniert. Bei mir war halt (wie ich erst jetzt rausfand) dieses Problem, dass getwindowlong weine Adresse zurückgab.
Das umgehst du ja damit. Ansonsten war ich auch ganz schnell bei TForm gelandet. :mrgreen: Edit: Interessant zu sehen, dass Delphi schon die records für die PE-Header bereithält. Die hab ich mir erst kürzlich selbst zusammengebastelt. |
Re: Zugriff auf ein TImage einer externen Anwendung
Wollte hier mal nachfragen ob das ganze noch weiter verfolgt wird. Ich hatte auch erst kürzlich das Problem ein Label einer fremden Anwendung auszulesen. Hatte leider keine Ahnung wie ich das anstellen soll. Wenn ich für euch irgendwas beisteuern kann, gebt bescheid.
Gruß Matthias EDIT: *LOL* ICH HAB DEN EINTRAG NUMMER 100 |
Re: Zugriff auf ein TImage einer externen Anwendung
Hi matashen,
ob wir hieran noch arbeiten? Ich find es war grad nur mal kurz Wochenende und schönes Wetter :bounce2: . Da hat bestimmt keiner was gemacht :zwinker: Im Moment geht es auch erstmal darum, ob brechis Variante "die VCL zu finden" bei KoS funktioniert. Die Lösungen die brechi und ich bereits gepostet haben, passen hervorragend auf die VCL von Delphi 7 (und meine zumindest auch bei Turbo Delphi Explorer). Damit kannst du erstmal probieren. Ansonsten müsstest du selber dein Programm mal debuggen, erklären oder was auch immer. |
Re: Zugriff auf ein TImage einer externen Anwendung
Liste der Anhänge anzeigen (Anzahl: 1)
so, ich hab mal brechis Variante in meine eingearbeitet.
Einzutragen sind -Window Title -Label name (also dein lbl2) -ClassName des Formulars (dabei reicht der Anfang: also TForm) Dann "Communicate" drücken Ansonsten mal schauen. |
Re: Zugriff auf ein TImage einer externen Anwendung
So mal wieder zum testen gekommen ...
Code:
Sieht nicht sonderlich vielversprechend aus, oder?
Debug: $00000000 $0B42037E
Error: EAccessViolation @0B4203C1 |
Re: Zugriff auf ein TImage einer externen Anwendung
Jetzt wirds nur noch ein probieren. Erstaunlicherweise haben wir die Klasse des Formulars gefunden, kommen aber darin nicht weiter :gruebel: also irgnediwe ist das Formluar anscheind ganz komisch aufgebaut. Das müsste man debuggen.
|
Re: Zugriff auf ein TImage einer externen Anwendung
Das Problem liegt doch viel mehr daran, dass KoS nicht die gewünschen Infos liefern kann die wir brauchen und dann noch zu selten online ist. Irgendwie hab ich das gefühl Sirus hat shcon mehr Zeit aufgebracht das Problem zu lösen, als der Threadersteller selber.
Zumindest einige Informationen könntest du uns geben. Windows Version, ist das Programm gepackt, wenn nicht mal die ersten paar Anweisungen vom EIP geben. Desweiteren mal sagen um was es sich genau für ein Programm handelt. |
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ich würde ja gern mehr Infos raus geben wenn ich könnte, geht aber eben leider nicht. Ich bin euch allen ja sehr dankbar das ihr bisher noch nicht aufgegeben habt. Verübeln würde ich es euch allerdings auch nicht wenn ihr keine Lust mehr habt. |
Re: Zugriff auf ein TImage einer externen Anwendung
Du hast ja den Sourcecode, könntest ja mal genau sagen wo z.b. der Fehler auftritt (einfach ein paar MessageBoxen einbauen)
Würd mir bei meiner Version schon einiges helfen... |
Re: Zugriff auf ein TImage einer externen Anwendung
Kann ich mal machen, aber das geht erst wieder am Mittwoch, vorher komm ich nicht dazu.
|
Re: Zugriff auf ein TImage einer externen Anwendung
Also ... der erste Test mit dem neuen Prog von dir brechi verlief relativ vielversprechend.
D.h. ich bekomme sowas zurück:
Code:
Allerdings hier nur von dem Hauptform "FormInit". Jedoch nicht von dem Ziel-Form.
Appinfo
Application FormInit 0: imgClient ... 5: btnInfo ... 11: lblInfo Was mit gerade noch aufgefallen ist, was euch noch helfen könnte, die Forms sind alle wie dieses Aufgebaut:
Code:
Also alle inherited und eigene Klasse TForm*.
inherited FormInit: TFormInit
|
Re: Zugriff auf ein TImage einer externen Anwendung
Ist mein Programm gecrashed?
Mit welcher Delphi Version ist das Programm erstellt? Wie heißt denn die Form die gesucht ist? Btw. kannst ja den Quelltext ändern und z.b. if (Pos('TForm',Form.ClassName) > 0) then weglassen vill findet der dann mehr? |
Re: Zugriff auf ein TImage einer externen Anwendung
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 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