Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Zwischen 2 Applicationen Toggeln (https://www.delphipraxis.net/75148-zwischen-2-applicationen-toggeln.html)

AndreT 15. Aug 2006 08:37


Zwischen 2 Applicationen Toggeln
 
Hallo, guten Morgen zusammen.

Mir fehlt noch komplett irgendwie der Ansatz.

Ich möchte ein Programm schreiben, mit dem ich Timergesteuert (das ist weniger das Problem) zwischen 2 Programmen, dessen Namen bekannt sind, hin und her schalten kann.

Also immer Abwechselnd ...Program A maximiert im Vordergrund, dann Programm B und dann wieder A und.........

Ich bin mit meinen Versuchen immer gescheitert.

Gibt es sowas wie Application.maximize('A.exe');? ..oder BringinFront

Danke

Gruß Andre

fkerber 15. Aug 2006 08:39

Re: Zwischen 2 Applicationen Toggeln
 
Hi!

Handelt es sich bei den zwei Programmen um selbstgeschriebene Programme oder beliebige?


Ciao, Frederic

AndreT 15. Aug 2006 08:44

Re: Zwischen 2 Applicationen Toggeln
 
um beliebige.

Als Beispiel "Outlook.exe" und "klicktel.exe"

Chris P 15. Aug 2006 08:46

Re: Zwischen 2 Applicationen Toggeln
 
Schau mal nach MSDN-Library durchsuchenFindWindow um an das Handle zu kommen und anschließend mit MSDN-Library durchsuchenBringToFront bringst du das Fenster in den Vordergrund.

Chris P 15. Aug 2006 08:58

Re: Zwischen 2 Applicationen Toggeln
 
Ich schicke dir einen kleinen Ansatz...

AndreT 15. Aug 2006 08:59

Re: Zwischen 2 Applicationen Toggeln
 
Zitat:

Zitat von Chris P
Ich schicke dir einen kleinen Ansatz...

Danke :)

Chris P 15. Aug 2006 09:03

Re: Zwischen 2 Applicationen Toggeln
 
Delphi-Quellcode:
var
  B: Boolean;
  Handle1, Handle2 : HWND;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Handle1 := FindWindow(nil , PCHAR('Fenster1')); // <--- 1. Fenstertitel einsetzen
   Handle2 := FindWindow(nil , PCHAR('Fenster2')); // <--- 2. Fenstertitel einsetzen
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   B := not B;

   if B then
     SetForegroundWindow(handle1)  // <--- statt BringToFront
   else
     SetForegroundWindow(handle2); // <--- statt BringToFront
end;
Habe es nicht ausprobiert, aber sollte vielleicht ein kleiner Ansatz sein ;-)

Chris P 15. Aug 2006 09:29

Re: Zwischen 2 Applicationen Toggeln
 
Das hier sollte besser gehen, aber nur wenn die Fenster sichtbar sind und nicht minimiert.

Delphi-Quellcode:
if B then
     SetwindowPos(handle1, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)
   else
     SetwindowPos(handle2, HWND_TOPMOST,0 , 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);

AndreT 15. Aug 2006 11:46

Re: Zwischen 2 Applicationen Toggeln
 
Mit Fenstertitel ist das was oben im "blauen" steht gemeint, oder der Name der Anwendung?


Funktioniert nämlich leider beides bei mir nicht. Es passiert garnichts :(

Code mit dem Namen der Anwendung (Mit Fenstertitel hab ich es auch probiert):

Delphi-Quellcode:
var
  Form1: TForm1;
    B: Boolean;
  Handle1, Handle2 : HWND;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetWindowLong( Application.Handle, GWL_EXSTYLE,
               GetWindowLong(Application.Handle, GWL_EXSTYLE) or
               WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Handle1 := FindWindow(nil , PCHAR('Programm1.exe')); // <--- 1. Fenstertitel einsetzen
Handle2 := FindWindow(nil , PCHAR('Programm2.exe')); // <--- 2. Fenstertitel einsetzen
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 B := not B;

   if B then
     SetForegroundWindow(handle1)  // <--- statt BringToFront
   else
     SetForegroundWindow(handle2); // <--- statt BringToFront
end;
*grübel*

mit dem 2.Ansatz das selbe

Chris P 15. Aug 2006 13:12

Re: Zwischen 2 Applicationen Toggeln
 
Also bei mir funktioniert es.

Hast du die 2 Fenster auch geöffnet?

Öffne die 2 Fenster und nimm die 2 Fenstertitel, z.b: 'Arbeitsplatz'.
Nicht den EXE-Namen.

Das SetWindowLong brauchst du nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr.
Seite 1 von 2  1 2      

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