AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Control in eine fremde Anwendung bringen???
Thema durchsuchen
Ansicht
Themen-Optionen

Control in eine fremde Anwendung bringen???

Ein Thema von merovingian · begonnen am 23. Jun 2004 · letzter Beitrag vom 10. Dez 2004
Antwort Antwort
Seite 1 von 3  1 23      
merovingian

Registriert seit: 23. Okt 2003
9 Beiträge
 
#1

Control in eine fremde Anwendung bringen???

  Alt 23. Jun 2004, 14:36
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?
  Mit Zitat antworten Zitat
NeoXX
(Gast)

n/a Beiträge
 
#2

Re: Control in eine fremde Anwendung bringen???

  Alt 23. Jun 2004, 23:29
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:
Windows.SetParent(Pnl.Handle, Hnd);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Control in eine fremde Anwendung bringen???

  Alt 24. Jun 2004, 10:07
Zitat von merovingian:
Es gibt doch zb auch einige Programme, die ToolBars oder ähnliches in anderen Programmen anlegen, obwohl das Programm keine Schnittstelle oder ähnliches dazu anbietet??
´
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 MSDN-Library durchsuchenWM_COMMAND Nachricht aus, welche an das Parentfenster gesendet wird. Gut und dann? Woher soll das fremde Fenster wissen, was es machen soll, wenn dein Button geklickt wird? Man könnte die Fenster-Prozedur des fremden Fensters subclassen. Aber dazu musst du eine DLL in den Adressraum des Prozesses injezieren, denn von "außen" kommst du da nicht dran.

Deswegen: Was soll das werden und warum willst du eine eigene Schaltfläche in einem fremden Programm haben?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
merovingian

Registriert seit: 23. Okt 2003
9 Beiträge
 
#4

Re: Control in eine fremde Anwendung bringen???

  Alt 24. Jun 2004, 12:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Control in eine fremde Anwendung bringen???

  Alt 24. Jun 2004, 17:56
Ich freue mich über jeden neuen Hook im System.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
merovingian

Registriert seit: 23. Okt 2003
9 Beiträge
 
#6

Re: Control in eine fremde Anwendung bringen???

  Alt 24. Jun 2004, 22:55
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 ???
  Mit Zitat antworten Zitat
NeoXX
(Gast)

n/a Beiträge
 
#7

Re: Control in eine fremde Anwendung bringen???

  Alt 24. Jun 2004, 23:29
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:
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;
Übrigens, ich hasse Werbebanner
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Control in eine fremde Anwendung bringen???

  Alt 25. Jun 2004, 13:02
Zitat von merovingian:
Naja komm, ein Hook ansich ist ja nichts schlimmes
Jeder Hool belastet das System. Nachrcihten müssen ja immer noch durch zusätzlichen Code geschleift werden.

Zitat:
Ok, ich bekomme keine Botschaften mehr vom Control
Eben und wie willst du da auf einen Klick oder ähnliches reagieren?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
merovingian

Registriert seit: 23. Okt 2003
9 Beiträge
 
#9

Re: Control in eine fremde Anwendung bringen???

  Alt 25. Jun 2004, 13:26
Hallo,

Zitat von NeoXX:
Das mit dem "Umbiegen" des Parents funzt wunderbar. Ich kann jegliche Controls von meinem Fenster auf ein anderes umlegen.
Komisch, dass war eigentlich mein erster Gedanke .. nur da hats nicht funktioniert. Naja, dann werd ichs nochmal probieren.

Zitat von NeoXX:
Übrigens, ich hasse Werbebanner
Tja, das geht wohl allen so (mir auch). Nur wenn du dafür ein Programm kostenlos nutzen kannst und den Programmierer bei seiner Weiterentwicklung unterstützt, sieht die Sache schon anders aus. Oder möchstest du gerne dem Entwickler der Freeware, die du nutzt, die Traffickosten / Webspace / etc. bezahlenden. Was vielen nicht klar ist... wenn man etwas wirklich sinnvolles programmiert, was dann auch von vielen genutzt wird entstehen ein Haufen Unkosten, die gedeckt werden müssen. Und wenn man dann seine Software schon kostenlos anbietet, dann kann man das ja wenigsten auf diese Weise regeln?!?!

Zitat von Luckie:
Jeder Hool belastet das System. Nachrcihten müssen ja immer noch durch zusätzlichen Code geschleift werden.
Eine zusätzliche Belastung ist es ganz sicher, nur geht der Trend dahin, dass immer mehr Benutzer HighEnd Pc´s haben ... und da ist die Frage dann, wie stark diese Belastung auffällt. Und die meisten Programme brauchen keine Hooks, um ihre Funktion zu erfüllen... daher dürfte die Anzahl der gesetzen Hooks relativ gering bleiben.

Zitat von Luckie:
Eben und wie willst du da auf einen Klick oder ähnliches reagieren?
Und da kommt dan der Hook ins Spiel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Control in eine fremde Anwendung bringen???

  Alt 25. Jun 2004, 13:49
Zitat von merovingian:
Eine zusätzliche Belastung ist es ganz sicher, nur geht der Trend dahin, dass immer mehr Benutzer HighEnd Pc´s haben ... und da ist die Frage dann, wie stark diese Belastung auffällt. Und die meisten Programme brauchen keine Hooks, um ihre Funktion zu erfüllen...
Tja und dann beschweren sich die Leute immer, dass die Hardwareanforderungen in den Himmel wachsen.
Zitat:
daher dürfte die Anzahl der gesetzen Hooks relativ gering bleiben.
Aber nicht, wenn alle so denken wie du und ich befürchte es gibt schon mehr Hooks im System als wir uns träumen lassen.

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. Ich brauche wohl nicht zu erwähnen, dass er ziemlioch schnell wieder runter war.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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