我目前擺弄SetDisplayConfig()
和ChangeDisplaySettingsEx()
以及發現這似乎與我的設置。 SDC_TOPOLOGY_INTERNAL
和SDC_TOPOLOGY_EXTERNAL
指Windows決定您的主(屏幕)和輔助(投影機)顯示器,類似於您的印刷機的顯示器選擇贏 + P。這是我的另一種方式,所以你必須檢查你的配置中是否有正確的配置。然後,您只需撥打InternalDisplay()
或ExternalDisplay()
即可激活該功能並自動關閉另一個功能。爲了完整起見,我添加了克隆和擴展設置。
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
private static extern long SetDisplayConfig(uint numPathArrayElements,
IntPtr pathArray, uint numModeArrayElements, IntPtr modeArray, uint flags);
UInt32 SDC_TOPOLOGY_INTERNAL = 0x00000001;
UInt32 SDC_TOPOLOGY_CLONE = 0x00000002;
UInt32 SDC_TOPOLOGY_EXTEND = 0x00000004;
UInt32 SDC_TOPOLOGY_EXTERNAL = 0x00000008;
UInt32 SDC_APPLY = 0x00000080;
public void CloneDisplays() {
SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, (SDC_APPLY | SDC_TOPOLOGY_CLONE));
}
public void ExtendDisplays() {
SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, (SDC_APPLY | SDC_TOPOLOGY_EXTEND));
}
public void ExternalDisplay() {
SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, (SDC_APPLY | SDC_TOPOLOGY_EXTERNAL));
}
public void InternalDisplay() {
SetDisplayConfig(0, IntPtr.Zero, 0, IntPtr.Zero, (SDC_APPLY | SDC_TOPOLOGY_INTERNAL));
}
看到我的答案在重複的問題:http://stackoverflow.com/questions/16342757/how-can-i-temporarily-blank-a-windows-7-2nd-display-monitor-in- C – Xaruth 2013-05-06 11:35:04