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 Fenster in den Vordergrund, ohne den Focus zu verlieren (https://www.delphipraxis.net/40495-fenster-den-vordergrund-ohne-den-focus-zu-verlieren.html)

BenjaminH 16. Feb 2005 16:43


Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Hallo,
Ich möchte ein Fenster(Miranda IM) in den Vordergrund bringen,
aber ich will nicht, dass meine Anwendung dabei den Focus verliert.
Ich hab schon mit SetForegroundWindow und SetWindowPos experimentiert, das hat aber nicht den gewünschten effekt ergeben.
Dabei hab ich bemerkt, dass immer, wenn die Anwendung in den Vordergrund gebracht wird, auch die Taskleiste eingeblendet wird, das will ich auch nicht.

Vielen Dank
Benjamin

Sprint 16. Feb 2005 16:55

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Zitat:

Zitat von BenjaminH
Dabei hab ich bemerkt, dass immer, wenn die Anwendung in den Vordergrund gebracht wird, auch die Taskleiste eingeblendet wird, das will ich auch nicht.

Dieses Verhalten ist bei Windows von Version zu Version unterschiedlich.

Was z.B. unter XP geht:
Delphi-Quellcode:
SetWindowPos(AppHWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
SetWindowPos(AppHWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);

BenjaminH 16. Feb 2005 16:59

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Zitat:

Zitat von Sprint
Delphi-Quellcode:
SetWindowPos(AppHWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
SetWindowPos(AppHWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);

Geht leider beides nicht, mit HWND_TOPMOST kommt das Fenster zwar in den Vordergrund, aber die Taskleiste kommt mit und mein Programm verliert den Focus, obwohl ich Win XP hab.
Ich meine, wenn ich FormStyle auf fsStayOnTop setze habe ich den gewünschten Effekt, aber wie kann ich das für fremde Fenster einstellen?
[edit]auch bei HWND_NOTOPMOST taucht die Taskleiste auf[/edit]

Sprint 16. Feb 2005 17:43

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Zitat:

Zitat von BenjaminH
Geht leider beides nicht, mit HWND_TOPMOST kommt das Fenster zwar in den Vordergrund, aber die Taskleiste kommt mit und mein Programm verliert den Focus, obwohl ich Win XP hab.

Hab mir gerade Miranda IM downgeloadet. Geht wunderbar!


Edit: \\
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  AppHWnd: HWND;
begin

  AppHWnd := FindWindow('Miranda', 'Miranda IM');
  if IsWindow(AppHWnd) then
    if IsWindowVisible(AppHWnd) then
    begin
      SetWindowPos(AppHWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
      SetWindowPos(AppHWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE);
    end;

end;

BenjaminH 17. Feb 2005 14:51

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Zitat:

Zitat von Sprint
Geht wunderbar!

Ja, geht bei mir jetzt auch, hatte das Fenster davor in einer anderen Prozedur aktiviert :oops:

Vielen Dank

Der_Ventilator 6. Mär 2005 19:51

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
ich würde gerne meine eigene Anwendung (Mp3Player-Delphi 7) durch einen Shortcut starten; dabei soll aber mein Spiel nicht minimiert werden (sozusagen wenn ich vor dem Spielstart vergesse meine Anwendung zu starten; der Player spielt beim Start sowieso von alleine los, deswegen brauch ich ihn also nur im Hintergrund starten)

Geht das?

Sprint 6. Mär 2005 21:13

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Vielleicht reicht es schon, wenn du als Show Parameter SW_SHOWNOACTIVATE benutzt. Einfach mal ausprobieren.

Der_Ventilator 6. Mär 2005 22:35

Re: Fenster in den Vordergrund, ohne den Focus zu verlieren
 
Kannst du mir den genauen Code geben?

Hab nämlich wenig WinAPI Erfahrung


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