C# Bildschirm projizieren ändern?
Moin,
ich würde gerne in C# die folgende Funktion verwenden;
Ich möchte, dass wenn ich eine bestimmte Anwendung starte (würde ich über Argumente machen), dass ich die Projizierung von "Erweitern" auf "Nur PC-Bildschirm" ändere.
Danke, einen schönen Ostermontag und LG
1 Antwort
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. ... */
}
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.
Ah, super. Danke. Konnte ich leider nicht so dolle bei Google finden bzw. habe nach dem falschen gesucht. :-)