GUI soll Fenster nicht verdecken

08/18/2013 02:16 Longibotti#1
Hallo liebe Scripter :)

ich möchte ein Programm schreiben, welches ähnlich wie eine Taskleiste arbeitet, allerdings an der rechten Seite ausgerichtet wird. Bisher habe ich das auch mehr oder weniger geschafft:

Code:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate("Titel", @DesktopWidth*0.2, @DesktopHeight, @DesktopWidth-(@DesktopWidth*0.2), Default, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
GUISetState(@SW_SHOW)
While 1
WEnd
Die Leiste ist immer im Vordergrund und kann nicht minimiert/maximiert werden (soll so). Das Problem: Wenn ich nun beispielsweise ein Fenster maximiert geöffnet habe, und gleichzeitig das Programm läuft, wird logischerweise ein Teil des Fensters überdeckt. Wie kann ich bewirken, dass der Bildschirm sozusagen eingeschränkt wird und Fenster dort nicht drunter geschoben werden können?

Um das ganze mal zu veranschaulichen:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Ich habe über Google und Co leider nur Methoden zum Verändern der Bildschirmauflösung gefunden. Vielleicht hat jemand von euch ja eine Idee :) Vielen Dank im Voraus
08/18/2013 02:25 alpines#2
Du könntest die Handles aller Fenster herausfinden und sie dann verschieben? Aber einschränken kannst du das nicht, weil Windows-Fenster ja auch über den Rand gehen.
08/18/2013 08:03 Croco™#3
Das würde einfach gehen:
Als erstes lässt du dir alle Offenen Fenster ausgeben.
Dann liest du die Position und größe der Fenster aus und rechnest mit Position+Größe die Rechte Ecke aus. Jetzt weißt du ob das Fenster in deine "Taskleiste" reicht und kannst es verkleinern oder Verschieben.
08/18/2013 13:48 KDeluxe#4
Du kannst den Arbeitsbereich des Desktops einstellen. Maximierst du ein Fenster, so wird es nur in diesem Bereich maximiert. Deine Leiste würde also sichtbar bleiben.
Das hält Windows aber nicht davon ab Anwendungen weiter als diese Leiste zu verschieben, so wie man auch normale Fenster in einen "nicht existierenden Bereich" verschieben kann.

[Only registered and activated users can see links. Click Here To Register...]
SPI_SETWORKAREA

Vielleicht gibt es dazu eine UDF, google einfach mal danach.