Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Controls in fremden Anwendungen erstellen (https://www.delphipraxis.net/118618-controls-fremden-anwendungen-erstellen.html)

Dawn87 11. Aug 2008 16:36


Controls in fremden Anwendungen erstellen
 
Hallo,

ich habe eine grundsätzliche Frage zur Windows API:

Ist es möglich das meine Anwendung ein Steuerelement in einem Fenster einer anderen Anwendung erstellt ohne das ich auf Techniken wie z.B. DLL Injection zurückgreifen muss?

Ich habe mal ein bißchen rumprobiert, konnte aber leider keinen Erfolg erzielen. Nun frage ich mich, ob ich einen Fehler in meinem Quellcode habe oder ob es eine grundsätzliche Einschränkung gibt.

Grüße,
Stefan

toms 11. Aug 2008 18:12

Re: Controls in fremden Anwendungen erstellen
 
Zitat:

Zitat von Dawn87
Ich habe mal ein bißchen rumprobiert, konnte aber leider keinen Erfolg erzielen. Nun frage ich mich, ob ich einen Fehler in meinem Quellcode habe oder ob es eine grundsätzliche Einschränkung gibt.

Hallo Stefan,


Deine Frage ist selbst mit der :glaskugel: nicht beantwortbar. Du müsstest schon weitere Details liefern.
Wie sieht denn dein Quelltext aus, was hast du probiert?

jfheins 11. Aug 2008 18:44

Re: Controls in fremden Anwendungen erstellen
 
Ich habe es geschafft - es ist also möglich ;)

Das ist jetzt sicher nicht sauber, aber es hat funktioniert:
hwnd ist das Handle des parents
wwmenubtn ist eine Klasenvariable
Delphi-Quellcode:
if Hwnd <> 0 then
  begin
    WWMenuBtn := TButton.Create(Self);
    with WWMenuBtn do
    begin
      Left := 600;
      Top := 1;
      Width := 60;
      Height := 18;
      Caption := '&Plugins';
      Parent := nil;
      OldMenuBtnWndProc := WindowProc;
      WindowProc := MenuBtnWndProc;
      ParentWindow := MenuHwnd;
    end;
  end;


procedure TForm1.MenuBtnWndProc(var Msg: TMessage);
begin
  if Msg.Msg = WM_LBUTTONUP then
  begin
    Beep;
  end;

  OldMenuBtnWndProc(Msg);
end;
Nachteil: man muss die Messages umleiten um sie zu bekommen ...

Dawn87 12. Aug 2008 09:04

Re: Controls in fremden Anwendungen erstellen
 
Hallo,

vielen Dank für eure Antworten.

Der Code funktioniert super. Ich habe in meinem Code das Umleiten der Nachrichtenschleife nicht getan.

@Toms:
Ist nur eine kleine Spielerei. Ich wollte einfach mal wissen in welchen Umfang man die Oberfläche einer anderen Anwendung manipulieren kann.

Grüße
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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