C# Bildschirm projizieren ändern?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

In der Windows API gibt es die SetDisplayConfig-Funktion, der du über einen Flag die Information mitgeben kannst, welche Monitore benutzt werden sollen (schau in der Tabelle nach SDC_USE_DATABASE_CURRENT).

Du könntest also zunächst die Schnittstelle importieren:

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern long SetDisplayConfig(uint numPathArrayElements, IntPtr pathArray, uint numModeArrayElements, IntPtr modeArray, SetDisplayConfigFlags flags);

Und dann anwenden, um bspw. den Bildschirm zu erweitern:

SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, 0x00000004 | 0x00000080);

Die jeweiligen Werte für die Flags stehen in der oben erwähnten Tabelle. Vermutlich wäre es sinnvoll, sie der besseren Lesbarkeit halber in ein Enum zu packen.

public enum DisplayConfigFlags : uint
{
  APPLY = 0x00000080,
  EXTERNAL_DISPLAY = 0x00000004,
  /* etc. ... */
}

Dultus, UserMod Light  
Fragesteller
 18.04.2022, 22:36

Ah, super. Danke. Konnte ich leider nicht so dolle bei Google finden bzw. habe nach dem falschen gesucht. :-)

0
Palladin007  19.04.2022, 00:21
@Dultus, UserMod Light

Sowas findest Du auch nicht so leicht, wenn du dich auf C# beschränkst.

Such nach der WinApi, auch wenn in der Doku nichts von C# oder .NET steht, kann man sie dennoch nutzen - ist nur schwieriger.

0