Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Oberfläche (Resourcen) eines Programms nachbilden (https://www.delphipraxis.net/55334-oberflaeche-resourcen-eines-programms-nachbilden.html)

moritz 19. Okt 2005 18:59


Oberfläche (Resourcen) eines Programms nachbilden
 
Moin!

Ich wollte mich mal erkundigen, ob es eine Möglichkeit gibt, aus einer EXE (Bzw. eben dem ganzen Programm) die Oberfläche auszulesen und diese Nachzubauen...Eben selber ein Fenster aufbauen, wie es Windows macht, ohne das Programm ausführen zu müssen.
Oder, falls das nicht geht, das Programm auszuführen, und paralell dazu das Interface mitlaufen zu lassen.

Gruß

Achtzig 20. Okt 2005 14:30

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Ich glaube nicht. Komponenten die zB. zur Laufzeit erzeugt werden, werden natürlich nicht in der Resource gespeichert. Außerdem müßten alle erforderlichen Komponenten vorhanden sein und richtig initialisiert werden, wozu das Programm ausgeführt werden muß.

Ein Interface wird Dir auch nicht weiterhelfen, da Dir dann immernoch der Programmcode fehlt.
Wenn es nur um das Abbild eines Fensters geht, kann es mit Alt+Druck in die Zwischenablage
kopiert werden.

Nebenbei bemerkt sind wir doch Programmierer und keine Piraten. :wink:

moritz 20. Okt 2005 14:33

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Moin!

Ja, aber die Oberfläche wird afaik. eben aus Window Messages (ShowMessage) und eben den Resourcen aufgebaut - Wenn man an beides rankommen würde, müsste es doch eigentlich möglich sein, oder?

Das mit den Piraten möchte ich nicht gehört haben :mrgreen: Nein, ernsthaft: Es geht hier nicht um Piraterie

Gruß

Edit: Rechtschreibefehler

Achtzig 20. Okt 2005 15:00

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Gut - kein Pirat :-D

Ich glaube, ich verstehe Deine Frage nicht richtig. ShowMessage ist für die Ausgabe eines Textes zuständig. Die Windows-Messages werden von Windows und einem Programm zur "Unterhaltung" genutzt und nicht als Resource gespeichert, sondern vom Programmcode gesteuert.

Die Oberfläche würde ich auch nicht aus der Resource laden (kann wegen Laufzeiterstellungen unvollständig sein) sondern direkt aus dem geöffneten Fenster "holen". Handle des Fensters besorgen und alle Komponenten ermitteln. Aus dem Kopf weiß ich leider nicht, wie die entsprechenden Windows-Funktionen benannt sind; sie sind auf jeden Fall vorhanden.

"Fremde" Fenster beinhalten oft auch "fremde" Komponenten die nicht einfach (in der Funktion) nachgebildet werden können.

Wahrscheinlich ist es wesendlich einfacher, daß Fenster per Hand nachzubauen. :cry:

moritz 20. Okt 2005 15:34

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Moin!

Also, es geht darum, ein beliebiges Programm in einem zweiten Fenster nachzubilden. Sprich, ich starte z.B. meinen Firefox, öffne mein Programm und das zeigt mir genau das, was auch der Firefox in dem Moment zeigt. Wenn ich im Firefox ein MainMenu aufmache, soll das in meinem Programm auch passieren.
Eben wie eine grafische Kopie, die eben nicht gecaptured ist, sondern echt nachgebaut.

Das ganze müsst doch eigentlich gehen, wenn man sämtliche das Fenster betreffende Nachrichten (Das Fenster wird doch nur mit Nachrichten gemalt, oder?) abfängt und sie auf die Resourcen, die man dem Programm entnommen hat, anwendet, oder?

Gruß

Stanlay Hanks 20. Okt 2005 16:18

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Hi Moritz. Ich kann mir nicht vorstellen, dass das klappen kann. Es gibt derart viele WindowsMessages, die ein äußerst kompliziertes Zusammenspiel haben. Da immer richtig auf die richtige zu reagieren, dürfte schwer bis unmöglich sein. Außerdem sehe ich ein Problem: Was, wenn das betreffende ("abzumanlende ") Programm überdeckt (oder im Hintergrund) ist? Dann wird es gar nicht gezeichnet, sondern nur der Teil, der gerade zu sehen ist.

Man liest sich, Stanlay :hi:

moritz 20. Okt 2005 16:20

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Moin!

Die Sache mit dem Hintergrund ist nicht das Problem...die Messages werden ja trotzdem gesendet, von Windows aber vermutlich einfach nicht gezeichnet.
Das es schwer wird, ist mir klar - aber interessieren würde mich das trotzdem mal, irgendeine Möglichkeit dazu müsste es doch geben, oder?

Gruß

dizzy 20. Okt 2005 23:44

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Du müsstest trotzdem haufenweise Programmlogik "abgreifen" können, was imho nicht, oder kaum machbar geht. Man stelle sich eine Paintbox vor, auf die bei WM_PAINT ein Backbuffer kopiert wird, der zuvor evtl. noch mit ein paar Pixeln bemalt wird. Du weisst allein durch WM_PAINT überhaupt nix von dem Backbuffer, und erst recht nichts über das enthaltene Bitmap, geschweige denn wie es zustande kam. Das ist rein Sache des Programmes, und es findet ja auch alles brav in dessen virtuellen Adressraum statt (für gewöhnlich).
Die einzigen Elemente die sich in etwa so wie du dir das denkst abgreifen ließen sind solche, die die WinAPI von sich aus bereitstellt (Fenster, Buttons, Edits, etc.), aber auch bei diesen werden sicherlich hier und da selbstgebaute Varianten verwendet (-> Skins), oder auch mal gerne ein OwnerDraw, durch das du schon mal nicht mehr an die ursprüngliche Darstellung kommst.

Ich fürchte mit deinem Ansatz - so interessant er klingt - wird man nicht allzu weit kommen :?

kiar 21. Okt 2005 00:28

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
suche mal nach DeDe.

raik

dizzy 21. Okt 2005 00:59

Re: Oberfläche (Resourcen) eines Programms nachbilden
 
Zitat:

Zitat von kiar
suche mal nach DeDe.

raik

Soweit ich das verstanden habe soll das für sämtliche Programme funktionieren, und zwar voll dynamisch zur Runtime beider Programme. DeDe ist doch afaik "nur" ein Delphi-Decompiler, oder kann der auch mehr? Jedoch sollte das egal wie nicht allzuviel bringen. Denn am Ende liefe es darauf hinaus, fast das gesamte Programm zu kopieren, und die Messages zu doppeln. Da wird's dann aber mit der Legalität haarig, und auch mit dem Sinn :stupid:.
Ich denke da sollte man seine Zeit und Energie besser in die Entwicklung günstiger Übertragung von (Teil-)Bitmaps stecken, auch wenn es zugegebendermaßen vergleichsweise langweilig wäre ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 Uhr.
Seite 1 von 2  1 2      

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