是否可以以编程方式启用第二个监视器并使用C#将Windows桌面扩展到它上面?它需要相当于打开下图中的复选框.
MSDN设备上下文功能
你基本上需要做什么:
使用EnumDisplayDevices()API调用枚举系统上的显示设备并查找那些没有
DISPLAY_DEVICE_ATTACHED_TO_DESKTOP
标志设置(这将包括任何镜像设备,因此并非所有设备都是物理显示器.)一旦找到显示设备,您需要获得有效的显示模式才能将其更改为,您可以通过调用EnumDisplaySettingsEx找到它( )API调用 - 通常你会显示所有可用的模式并允许用户选择,但在你的情况下,听起来这可能是硬编码并为你节省额外的一步.为了使您的应用程序能够面向未来,虽然我建议您可以轻松更改此应用程序,而无需每次都仔细查看源代码,但注册表项是明显的选择.一旦你完成整理后,填充一个DevMode显示结构,其中包含有关显示位置的信息(设置PelsWidth/Height,Position,DisplayFrequency和BitsPerPel属性)然后在fields成员中设置这些标志.最后使用此设置结构调用ChangeDisplaySettingsEx(),并确保发送重置和更新注册表标志.这应该是你所需要的,希望这有帮助,
使用PInvoke导入DISPLAY_DEVICE结构
EnumDisplayDevices函数导入
EnumDisplaySettingsEx函数导入
其他功能可以通过简单的名称搜索找到.
如果您有Windows 7,那么只需启动一个过程:
private static Process DisplayChanger = new Process { StartInfo = { CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden, FileName = "DisplaySwitch.exe", Arguments = "/extend" } };
然后DisplayChanger.Start();