Delphi-PRAXiS

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 Eigenes Programm nach Aufruf wieder in den Hintergrund legen (https://www.delphipraxis.net/113478-eigenes-programm-nach-aufruf-wieder-den-hintergrund-legen.html)

Brainshock 8. Mai 2008 13:17


Eigenes Programm nach Aufruf wieder in den Hintergrund legen
 
Hallo,

ich habe ein Programm, was von einem Fremdprogramm über Parameter aufgerufen wird. Mein Programm ist geöffnet und liegt in der Fensterreihenfolge im Hintergrund (nicht minimiert). Beim Aufruf kommt es in den Vordergrund und führt ein paar Aktionen aus. Nun soll es nach der Durchführung der Aktionen wieder im Hintergrund verschwinden, d.h. hinter dem Fremdprogramm liegen.

Hat einer eine Ahnung, wie das gemacht wird?
Ich habe schon einige Sachen getestet, aber keine Lösung gefunden. SetWindowPos() z.B. funktioniert auch nicht so richtig.

Gruß,

himitsu 8. Mai 2008 13:26

Re: Eigenes Programm nach Aufruf wieder in den Hintergrund l
 
in einer meiner Anwendungen nutze ich sowas:
Delphi-Quellcode:
Var H, Hf: THandle;

H := {Form1.}Handle; //  Fensterhandle der eigenen Form
Hf := Fensterhandle_der_Fremdanwendung;

SetWindowPos(H, Hf, 0, 0, 0, 0,
  SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
SetActiveWindow(Hf);
oder (kurz)
Delphi-Quellcode:
Hf := Fensterhandle_der_Fremdanwendung;
SetWindowPos({Form1.}Handle, Hf, 0, 0, 0, 0,
  SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);
SetActiveWindow(Hf);

Brainshock 8. Mai 2008 13:45

Re: Eigenes Programm nach Aufruf wieder in den Hintergrund l
 
Danke himitsu,

ich habe es nochmal nach deinem Muster probiert, es führt aber leider nicht zum gewünschten Ergebnis. Das Programm bleibt immernoch im Vordergrund. Mein Code ist der folgende:

Delphi-Quellcode:
SetWindowPos(Handle,
  HWND_BOTTOM, // hab HWND_BOTTOM, da ich das Handle von der Fremdanwendung nicht kenne
  0, 0, 0, 0,
  SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);

Brainshock 8. Mai 2008 13:52

Re: Eigenes Programm nach Aufruf wieder in den Hintergrund l
 
Okay, scheint an meiner Programmkonstellation zu liegen. Im Testprogramm funktioniert SetWindowPos. Oje, jetzt geht die Sucherei los.

Gruß,

Brainshock 11. Jul 2008 12:31

Re: Eigenes Programm nach Aufruf wieder in den Hintergrund l
 
So, nochmal aufwärmen das Ganze.

Das Fenster meiner Anwendung verschwindet jetzt erfolgreich im Hintergrund und das Fenster der Fremdanwendung ist im Vordergrund.

Jetzt habe ich das Problem, das meine Anwendung in der Taskleiste immer noch als aktiv angezeigt wird und deshalb der Fokus nicht auf der Fremdanwendung liegt.
Gibt es eine Funktion, mit der ich meine Anwendung deaktivieren kann ( Application.Deactivate oder so)?

Gruß,


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