![]() |
Control in eine fremde Anwendung bringen???
Hallo,
es muß doch irgendwie möglich sein, irgendein Control (zb. einen Panel) in einer Fremden Anwendung zu erzeugen. Es gibt doch zb auch einige Programme, die ToolBars oder ähnliches in anderen Programmen anlegen, obwohl das Programm keine Schnittstelle oder ähnliches dazu anbietet?? Wie geht sowas? |
Re: Control in eine fremde Anwendung bringen???
Man kann die Parent-Eigenschaft eines existierenden Controls auf das Fenster-Handels einer anderen Anwendung "umbiegen". Das Control ist dann ein "Kind" der anderen Anwendung, gehört aber noch zur eigenen.
d.h. Man kann es von der eigenen Anwendung wie gewohnt steuern und wenn die eigene Anwendung geschlossen wird, wird auch das Control geschlossen. Hier der Code zum ändern der Parent-Eigenschaft:
Delphi-Quellcode:
Windows.SetParent(Pnl.Handle, Hnd);
|
Re: Control in eine fremde Anwendung bringen???
Zitat:
Das wäre mir neu. Aber egal. Und wie soll es weitergehen, wenn du Schaltfläche auf dem fremden Fenster hast? Ein KLick auf den Button löst eine ![]() Deswegen: Was soll das werden und warum willst du eine eigene Schaltfläche in einem fremden Programm haben? |
Re: Control in eine fremde Anwendung bringen???
Hallo,
also weniger ein Button werden, mehr eine Komponente, die ich von TPanel zum Anzeigen von Bildern u. Videos abgeleitet hab. Der Grund dafür ist ein Werbekontept ähnlich wie es zb. bei Kazaa ist, dass also Werbebanner in jeglicher Form an bestimmten Stellen im Programm eingeblendet werden können. Ich will damit nicht irgendwelche Anwendungen mit Werbung vollstopfen, nur soll es eben möglich sein, diese Komponente ohne Änderung der Quellcodes unterzubringen. Die Zeichenvorgänge werden ja dann vom Programm selbst gesteuert (eigentlich schon, oder?). Und den Klick wollte ich dann mittels einem Hook abfangen und die Auswertung / Identifizierung über die ControlID bzw. das Handle machen und darauf hin die entsprechnde Aktion auslösen. Dazu soll das ganze dienen, nur bin ich im PSDK nicht wirklich weitergekommen um mein Problem zu lösen. |
Re: Control in eine fremde Anwendung bringen???
Ich freue mich über jeden neuen Hook im System. :evil:
|
Re: Control in eine fremde Anwendung bringen???
Naja komm, ein Hook ansich ist ja nichts schlimmes wenn er sauber und unschädlich arbeitet und immer schön CallNextHookEx aufruft, oder ???? So und jetzt geh ich meinem Ansatz mal weiter nach ... ich hoffe, du lässt mich am Leben :? Luckie, wenn ich morgen nochmal nachfragen sollte ???
|
Re: Control in eine fremde Anwendung bringen???
Das mit dem "Umbiegen" des Parents funzt wunderbar. Ich kann jegliche Controls von meinem Fenster auf ein anderes umlegen. Ich kann dann auch alles mit dem jeweiligen Control machen, was ich auch in der eigenen Anwendung machen könnte.
Ok, ich bekomme keine Botschaften mehr vom Control, das wird in diesem Fall ja aber auch nicht gebraucht (wobei, ein Schließen-Knopf wäre sinnvoll :!: ). Mit dem folgenden Code kann man das Control bei Bedarf auch wieder zurückholen (solange das andere Fenster sammt dem Panel nicht geschlossen wurde):
Delphi-Quellcode:
Übrigens, ich hasse Werbebanner :evil:
var
Hnd: HWnd = 0; ... procedure TForm1.Button1Click(Sender: TObject); begin if (Hnd = 0) then Hnd := FindWindow(nil, 'Arbeitsplatz'); if (Hnd <> 0) then Hnd := Windows.SetParent(Panel1.Handle, Hnd) else ShowMessage('Öffne mal den Arbeitsplatz und versuchs dann nochmal!'); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Panel1.Color := not Panel1.Color; Panel1.Font.Color := not Panel1.Color; Panel1.Caption := Format('Parent: %d', [GetParent(Panel1.Handle)]); end; |
Re: Control in eine fremde Anwendung bringen???
Zitat:
Zitat:
|
Re: Control in eine fremde Anwendung bringen???
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Control in eine fremde Anwendung bringen???
Zitat:
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr. |
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