Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Control in eine fremde Anwendung bringen??? (https://www.delphipraxis.net/24605-control-eine-fremde-anwendung-bringen.html)

mirage228 25. Jun 2004 13:53

Re: Control in eine fremde Anwendung bringen???
 
Zitat:

Zitat von Luckie
Und Hooks können ziemlich gefährlich sein. Ich hatte ein Messenger Programm. Das hat wohl auch einen Hook installiert oder so was. Jedenfalls jedesmal, wenn ich im Explorer eine Datei oder Ordner mit der Rechten Maustaste angeklickt habe ist der Messenger mit einer Exception abgestürzt. :evil: Ich brauche wohl nicht zu erwähnen, dass er ziemlioch schnell wieder runter war.

Hm, ICQ hat doch nen Hook für den Context-Menü Handler ("ICQ - Send to User"), damit immer alle online-User angezeigt werden oder?

mfG
mirage228

Luckie 25. Jun 2004 14:26

Re: Control in eine fremde Anwendung bringen???
 
Es war ein anderer Messenger. Aber das tut nichts zum Thema. Ich wollte nur zeigen, dass man mit Hooks sehr vorsichtig sein sollte, da es ein nicht gerader oberflächlicher Eingriff in das System bedeutet.

merovingian 25. Jun 2004 19:05

Re: Control in eine fremde Anwendung bringen???
 
Hallo,

Zitat:

Zitat von merovingian
ein Hook ansich ist ja nichts schlimmes wenn er sauber und unschädlich arbeitet und immer schön CallNextHookEx aufruft

wie gesagt... und das ganze ist natürlich auf freiwilliger Basis. Wers nicht installieren will kanns auch lassen.

NeoXX 25. Jun 2004 19:31

Re: Control in eine fremde Anwendung bringen???
 
Zitat:

Zitat von merovingian
Komisch, dass war eigentlich mein erster Gedanke .. nur da hats nicht funktioniert. Naja, dann werd ichs nochmal probieren.

Hat's mitlerweile funktioniert?
Wenn nicht, hast Du auch die Windows-API von SetParent und nicht die Delphi-Eigene benutzt? Also damit war's bei mir kein Problem. Hilft übrigens auch um nervige Werbebanner oder Popups in einen Panel gefangen zu halten.
Delphi-Quellcode:
HWND SetParent(
     HWND hWndChild,   // handle of window whose parent is changing
     HWND hWndNewParent    // handle of new parent window
    );
Delphi-Quellcode:
procedure SetParent(AParent: TWinControl); virtual;?
Zitat:

Zitat von merovingian
... wenn man etwas wirklich sinnvolles programmiert, was dann auch von vielen genutzt wird entstehen ein Haufen Unkosten, die gedeckt werden müssen.

Ok das seh ich ja auch ein, arbeite ja selbst als Programmierer und möchte ja auch meinen Lohn haben (um mein INet bezahlen zu können ;). Kleine Werbebanner die nicht stören (siehe Opera 7.51) sind auch ok und bringen auch Geld, aber Werbe-Klumpen, mit Aussagen wie "Wollen Sie 10.000 € im Monat von zu hause aus verdinen?!", die dann auch noch blinken und wackeln brauch ich wirklich nicht. Das animiert mich auch nicht dazu das Produkt doch lieber zu kaufen, dann schon eher zum Wechsel.
Stimmt das Preis-Leistungs-Verhältnis würde ich auch die Werbung "wegkaufen" und somit die Programmier, Tester, Vertreiber, und die sonst noch dazu gehören, unterstützen.

Zitat:

etwas wirklich sinnvolles
daraus resultiert:
'von vielen genutzt' * angemessener Preis = ein Haufen Kohle für 'ein Haufen Unkosten'[/b]
z.B. Opera für 34,00€ bzw. 22,99€ - find ich fair

NeoXX 25. Jun 2004 19:40

Re: Control in eine fremde Anwendung bringen???
 
Zitat:

Zitat von Luckie
Eben und wie willst du da auf einen Klick oder ähnliches reagieren?

Keine Ahnung :oops: ... über einen umwegigen Umweg vieleicht!? :gruebel:

Kann man vieleicht "einfach" nur global Mausbotschaften abfangen? Dann prüfen ob es das Fenster, auf dem der Banner liegt, den Focus hat, die Mauskoordinaten zur Position des Panels passen und dann, wenn alles passt, irgendwas tun (so viele Kommas in einem Satz, wenn eins falsch ist - Neue Retschreibung :mrgreen: ).

Tubos 25. Jun 2004 20:22

Re: Control in eine fremde Anwendung bringen???
 
Ja, das geht - entweder über Hooks oder du fragst alle 10 Millisekunden den Mausstatus über GetAsyncKeyState ab.
Möglichkeit Nr. 1 ist ziemlich kompliziert und wie gesagt eine Systembremse, Möglichkeit 2 kannst du gleich vergessen weil es den Computer ziemlich auslastet.

NeoXX 27. Jun 2004 14:16

Re: Control in eine fremde Anwendung bringen???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey, hier noch ein Lösungsvorschlag ohne Hooks und ohne Timer dafür aber mit Botschaftenbehandlung.
Warum nur ein Control in das fremde Fenster umschieben und nicht gleich das ganze Formular. Wenn ich das Handle des eigenen Fensters auf das des anderen Fensters setze ist es ein "Kind" dessen (im Vordergrund) und erhält z.B. Klick-Botschaften auf die es reagieren kann.

siehe Screenshot...

merovingian 28. Jun 2004 11:45

Re: Control in eine fremde Anwendung bringen???
 
Hallo,

ansich eigentlich praktisch und gar nicht schlecht. Nur muß man vieleicht bei manchen Programmen dann Fenster immer umschieben um die verschiedenen Schaltflächen etc. zu erreichen. Dem wollte ich eigentlich vorbeugen, indem das entsprechende Control irgendwo fest platziert wird. Das Control soll deshalb seine eigene Ereignisbehandlungsroutinen bekommen.

NeoXX 29. Jun 2004 09:46

Re: Control in eine fremde Anwendung bringen???
 
Na Du kannst das Fenster doch in dem anderen Fenster genau so fest platzieren wie jedes andere Control. Du kannst doch Größe u. Position Deines Fensters so anpassen das es nichts verdeckt und niemanden stört. Dann änderst Du die Eigenschaft BorderStyle auf bsNone und schon sieht's aus wie n' fester Panel. :wink:
Und das Control hat seine eigene Ereignisbehandlungsroutinen!?
Hast Du Dir den Screenshot angesehen? Wenn man da auf das Image klickt passiert was. Genau so kannst Du auf Botschaften (Veränderungen) des Fensters reagieren.

Neutral General 8. Dez 2004 16:39

Re: Control in eine fremde Anwendung bringen???
 
Kann man auch Controls von anderen Anwendungen von denen man das Handle hat "verschieben" ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz