Delphi-PRAXiS
Seite 9 von 12   « Erste     789 1011     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zugriff auf ein TImage einer externen Anwendung (https://www.delphipraxis.net/86561-zugriff-auf-ein-timage-einer-externen-anwendung.html)

KoS 7. Mär 2007 13:18

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von bitsetter
Voraussetzung ist natürlich, dass das Programm nicht zu umfangreich ist und die Lizenzvereinbarungen eingehalten werden.

Mit diesem Satz triffst du genau die Problematik! ;-)

sirius 7. Mär 2007 15:50

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von bitsetter
Hallo, wenn KoS die Applikation in der er ein Image kontrollieren möchte mal zu Testzwecken sirius zur Verfügung stellen würde, dann könntet Ihr beide sicherlich schneller zu einem Ergebnis kommen.

Das hatte ich mir auch mal gedacht.

allerdings dachte ich mir auch, wenn es möglich wäre
Zitat:

Zitat von bitsetter
Voraussetzung ist natürlich, dass das Programm nicht zu umfangreich ist und die Lizenzvereinbarungen eingehalten werden.

hätte KoS das sicherlich schon getan.


Aber mir gehen auch die Ideen aus.
@All Wie blockiert das Programm ein "readprocessmemory" an der Einsprungadresse der WndProc?

KoS 7. Mär 2007 17:45

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?

sirius 7. Mär 2007 19:31

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:

Ich Intelligenzbolzen hab vergessen die dll mit rüber zu ziehen!
Die DLL ist nur zum disassemblen, also zur Anzeige, alles andere funktioniert trotzdem.

KoS 8. Mär 2007 10:18

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von sirius
Edit zum x-ten:
Zitat:

Ich Intelligenzbolzen hab vergessen die dll mit rüber zu ziehen!
Die DLL ist nur zum disassemblen, also zur Anzeige, alles andere funktioniert trotzdem.

Das die DLL für zum disassamblen ist, ist mir schon klar, aber ohne kann er es halt nicht und damit auch keine Ausgabe für den Memoryprozess.
War halt mein Fehler.

brechi 8. Mär 2007 19:09

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)

sirius 8. Mär 2007 20:26

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von brechi
(Letztes geht viel einfacher)

:thumb: Erzähl mal! Aber nebenbei brauchen wir auch noch den Inhalt verschiedener Labels.

KoS 9. Mär 2007 11:00

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.

brechi 9. Mär 2007 11:50

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.

sirius 9. Mär 2007 12:08

Re: Zugriff auf ein TImage einer externen Anwendung
 
Zitat:

Zitat von Sirius
Und was mach ich jetzt mit dem Handle ? Ich brauche doch die Adresse.

Hier gehts zu dem Thema weiter.


Zitat:

Zitat von brechi
eine Dll in den Prozes zu laden und dann einfach einer Variable die Adresse der Form zuweisen.
Dann funktionieren alle Funktionen wie FindComponent usw.

Vorraussetzung ist auch hier, dass es die gleiche VCL ist. Aber das ist auch alles nicht das Problem. Ich habs nun ohne DLL und ohne VCL gemacht, klappt ja auch prima. Aber eben nicht bei diesem Programm. Weil es nämlich genau an dem "einfach die Adresse der Form zuweisen" scheitert. Bisher bin ich von der WndProc ausgegangen. Die Adresse des Formulars liegt 9 Bytes dahinter. Funktioniert, solange man eben die Adresse der WndProc hat. Eine aandere Referenz ist mir nicht eingefallen. Und das Programm kann ich leider nicht debuggen.

Zitat:

Zitat von brechi
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.

Das ist mal ein neuer Weg, aber wie weis man dann, welches Textout zu welchem Label gehört.... vielleicht über die Koordinaten.. da muss man mal drüber nachdenken.


PS:
Zitat:

Zitat von brechi
Also ich weiß nicht wo das Problem ist

Klingt ein bisschen überheblich / unhöflich, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 9 von 12   « Erste     789 1011     Letzte »    

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