Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kann ich das Fenster (Window) hinter mein Programm aktiv? (https://www.delphipraxis.net/159074-wie-kann-ich-das-fenster-window-hinter-mein-programm-aktiv.html)

thomas2009 13. Mär 2011 12:37

Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Hi
Ich möchte nach dem Verbergen (Hide) von meinem Programm das direkt liegende Fenster (fremde Anwendung) aktiv machen (den Fokus setzen)

wie kann ich das machen ?
Das Problem ich weiß nicht, wie das Windows, das direkt unter mein Programm heißt !

lbccaleb 13. Mär 2011 12:52

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
ActivateWindow oder SetForegroundWindow?

Schon mal gegoogelt oder gesucht?

thomas2009 13. Mär 2011 12:54

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Ich möchte aber das Fremde Fenster nur den Fokus geben und nicht nach vorne über meinem Programm verschieben

fkerber 13. Mär 2011 12:56

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Hi,

hast du nicht oben gesagt, dass dein Programm eh nicht mehr da ist?


LG, Frederic

alfold 13. Mär 2011 13:02

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Macht Windows das nicht automatisch wenn ich mein Prog hide mache, das es das letzte Fenster(Prog) wieder aktiv setzt? Vorrausgesetzt man hat nich x Fenster(Progs) offen und will nun unbedingt das 1. von x haben :wink:

Gruss alfold

DeddyH 13. Mär 2011 13:02

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Außerdem würde es den Anwender wohl verwirren, wenn das Fenster mit dem Eingabefokus nicht im Vordergrund ist.

thomas2009 13. Mär 2011 13:35

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Zitat:

Zitat von DeddyH (Beitrag 1088067)
Außerdem würde es den Anwender wohl verwirren, wenn das Fenster mit dem Eingabefokus nicht im Vordergrund ist.

Nein, das ist kein Problem für den Anwender, da mein Programm sich versteckt. Das Ist auch logisch das Fenster unten den Fokus bekommt. Wieso würde es den Anwender verwirren?

lbccaleb 13. Mär 2011 13:40

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
SetFocus

thomas2009 13. Mär 2011 14:04

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Alles was ich nun benötige ist nicht anderes als den Namen von dem Window, das direkt unter meinem Programm liegt, wissen, damit ich den Fokus drauf setzen kann
Das ist alles .

alfold 13. Mär 2011 14:21

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
und wenn es mehrere sind? :wink:

Bei einem, hab ich oben schon geschrieben, macht das Windows selbst!
Bei vielen muss ich wissen, welches ich davon nach vorn bringen will!

Gruss alfold

Luckie 13. Mär 2011 14:53

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
also ich würde da nicht an dem Mechanismus von Windows rumfuschen. Der Benutzer ist an den Mechanismus von Windows gewöhnt und würde wohl eher irritiert reagieren, wenn sich sein Windows auf Grund deines Programms auf einmal anders verhält -- wenn er überhaupt herausfindet, dass es an deinem Programm liegt. Lass es so wie es ist und überlasse es einfach Windows.

thomas2009 13. Mär 2011 15:06

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
wenn mehrere windows gibt, dann kann ich zum Beispiel einen Timer setzen der ständig nach dem Namen von dem aktiven Windows ausliest
Und so kann ich wissen, wer zuerst aktiv war :-D

Wenn ich folgendes mache
Delphi-Quellcode:
...
hwnd:=GetForeGroundWindow;
Caption:=
wie kann ich den Namen filtern ?
Oder brauche ich überhaupt den Namen zu wissen ?
Einfach hwnd ständig ersetzen (aktualisieren) ?

DeddyH 13. Mär 2011 15:26

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Zitat:

Zitat von thomas2009 (Beitrag 1088110)
wenn mehrere windows gibt, dann kann ich zum Beispiel einen Timer setzen der ständig nach dem Namen von dem aktiven Windows ausliest
Und so kann ich wissen, wer zuerst aktiv war

Kommt Dir das nicht selber ein bisschen "komisch" vor?

EWeiss 13. Mär 2011 15:34

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Zitat:

Zitat von DeddyH (Beitrag 1088121)
Zitat:

Zitat von thomas2009 (Beitrag 1088110)
wenn mehrere windows gibt, dann kann ich zum Beispiel einen Timer setzen der ständig nach dem Namen von dem aktiven Windows ausliest
Und so kann ich wissen, wer zuerst aktiv war

Kommt Dir das nicht selber ein bisschen "komisch" vor?

Um ein Window in den Vordergrund zu setzen würde ich eher das gegenteil verwenden.
SetForeGroundWindow..

Aber irgendwie ist dein vorhaben sehr subjekt. ;)

gruss

thomas2009 13. Mär 2011 18:21

AW: Wie kann ich das Fenster (Window) hinter mein Programm aktiv?
 
Zitat:

Zitat von DeddyH (Beitrag 1088121)
Kommt Dir das nicht selber ein bisschen "komisch" vor?

Stimmt, das Problem das letzte aktive Fenster ist immer mein Programm-Fenster :?
Oder meinst Du was anderes ?
Hier ist der Code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd: THandle;
   w,h : integer;
   DC : HDC;
   hWin : Cardinal;
   r : TRect;
   sDC: Integer;
   IconInfo: TIconInfo;
   activeWindow: bool;
begin
sDC := GetDC(0);
   if activeWindow then
   begin
     hWin := GetForegroundWindow;
     sdc := GetWindowDC(hWin) ;
     GetWindowRect(hWin,r) ;
     w := r.Right - r.Left;
     h := r.Bottom - r.Top;
     chwnd:=GetForegroundWindow;
   end
   else
   begin
     hWin := GetDesktopWindow;
     sdc := GetDC(hWin) ;
     w := GetDeviceCaps (sDC, HORZRES) ;
     h := GetDeviceCaps (sDC, VERTRES) ;
   end;

caption:=IntToStr(w) +', ' + IntToStr(h);

end;
Der Code überprüft ob ein Fenster auf Desktop gibt oder nicht. Und wenn nicht, dann nehmt den Desktop als das aktive Fenster
Ich kann zwar das aktive Fenster (aber nicht von meinem Programm) speichern?


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