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 Z-Order Verändern (Fremde Anwendung!) (https://www.delphipraxis.net/97224-z-order-veraendern-fremde-anwendung.html)

Billi Berserker 7. Aug 2007 10:47


Z-Order Verändern (Fremde Anwendung!)
 
Ich arbeite gerade an ein paar funktionen mit denen ich alle sichtbaren Fenster beliebig auf dem Bildschirm hin und her schieben kann.
Dafür brauche ich die Möglichkeit Fenster einer anderen Anwendung in der Z-Order nach hinten und vorne zu verschieben.
Das Problem ist natürlich das das mit SetWindowPos() nicht funktioniert das die ganzen Fenster aus anderen Anwendungen sind.

Eine beliebige Anwendung in den Fordergrund bringen läßt sich über Umwege mit der ForceForegroundWindow() funktion realisieren. (welche hier im Forum schon oft genug gepostet wurde). Diese Funktion benutzt im Endeffekt die BringWindowToFront() funktion der WinAPI. Das Problem ist jedoch das ich in der WinAPI keine funktion finden konnte um eine Anwendung in den Hintergrund zu schicken.Modifizieren der ForceForegroundWindow() funktion (SetWindowPos() anstatt BringWindowToFront()) hat ebenfalls nicht funktioniert.

Bin jetzt gerade etwas ratlos und hab keine weiteren Ideen wie ich es realisieren soll das ein beliebiges Fenster komplett in den Hintergrund geschickt wird.
Informationen dazu findet man leider relativ schlecht da es normalerweise nur darum geht eine Anwendung in den Fordergrund zu bringen... :(

bitsetter 7. Aug 2007 11:29

Re: Z-Order Verändern (Fremde Anwendung!)
 
Hi,

wenn du dir das Handle des femden Fensters besorgst, kannst du mit
Delphi-Quellcode:
  SetWindowPos((*HWND*), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
doch das Fenster in den Hintergrund bringen.

Oder mit
Delphi-Quellcode:
  SetWindowPos((*Fenster1Handle*), (*Fenster2Handle*), 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Ein Fenster vor oder hinter ein bestimmtes Fenster setzen.

Billi Berserker 7. Aug 2007 11:49

Re: Z-Order Verändern (Fremde Anwendung!)
 
argh verdammt, das einzige was gefehlt hat war der SWP_NOACTIVATE Flag... damit gehts auch mit SetWindowPos...
danke :)

kann ich mit den ganzen ForceForegroundWindow kram auch sparen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz