it4baer
Goto Top

Windows Fenstermaximierung am Monitor einschränken

Hi,

die Frage findet man in diversen Foren, leider habe ich bislang noch keine brauchbare Antwort gefunden, oder ggf. nach dem falschen gesucht.

die Prinzip ist eigentlich ganz einfach, ähnlich wie die Taskleiste sich einen bereich reserviert, möchte ich mir für ein Programm einen bereich am Monitor reservieren (natürlich am Rand). Wenn dann ein Fenster Maximiert wird, soll das Programm als "grenze" für die Maximierung dienen...

Wenn ich z.B. meine Startleiste größer mache, oder an den linken / rechten Rand ziehe, kann Windows das ganze so verwalten, dass ein maximiertes Fenster trotzdem nicht überdeckt wird oder etwas überdeckt!

kann ich das auch irgendwie "nachstellen"? <- Programmiersprache ist "hier" erstmal offen, aber .NET wäre jetzt bei freier Wahl das tool meiner Wahl!

Vielen Dank

Content-ID: 364612

Url: https://administrator.de/contentid/364612

Ausgedruckt am: 25.11.2024 um 14:11 Uhr

135333
135333 13.02.2018 aktualisiert um 13:14:10 Uhr
Goto Top
DesktopCoral

Gruß Snap
it4baer
it4baer 13.02.2018 um 13:42:25 Uhr
Goto Top
okay, vielen Dank

Schritt 1...
Schritt 2 wäre jetzt die Frage, ob man Programmtechnisch sowas selbst bewerkstelligen kann, hier geht es einfach darum, dass das "Tool" sozusagen schon alles mitbringt und man nicht 2 Anwendungen installieren muss <- aber ist natürlich eine Sache des Aufwandes...

Danke
135333
135333 13.02.2018 aktualisiert um 14:11:05 Uhr
Goto Top
it4baer
it4baer 14.02.2018 aktualisiert um 16:13:12 Uhr
Goto Top
wow, vielen dank...

aber nun steh ich vor dem Rätsel was dieser Satz bedeuten könnte:
In a system with multiple display monitors, the function sets the work area of the monitor that contains the specified rectangle.

ich möchte natürlich auch von anderen (bzw. insbesondere nicht vom Primären) Monitor, die Area erhalten bzw. verändern!
=> wenn ich jetzt mit den Koordinaten, den primären Bildschirm verlasse, verändert er nichts.

Anbei mal meine Methoden
        public static Rect GetWorkArea()
        {
            Rect rect = new Rect();
            SystemParametersInfo(SPI.SPI_GETWORKAREA, IntPtr.Zero, ref rect, 0);
            return rect;
        }

        public static void SetWorkArea(Rect rect)
        {
            SystemParametersInfo(SPI.SPI_SETWORKAREA, IntPtr.Zero, ref rect, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }

bei GETWORKAREA schreibt er:
To get the work area of a monitor other than the primary display monitor, call the GetMonitorInfo function.

aber auch hier versteh ich "nicht so richtig" wie man die "GetMonitorInfo" Methode anwendet ...

Vielen Dank für jeden Tipp

=> für jeden den es interessiert ... hier ist praktisch die Lösung: http://www.pinvoke.net/default.aspx/user32/EnumDisplayMonitors.html

gruß