以编程方式启用辅助监视器

时间:2009-07-05 19:15:36

标签: c# winapi monitor

我希望能够在Windows Vista中使用C#启用辅助监视器。这是我的工作:

SafeNativeMethods.EnumDisplayDevices(null, (uint)id, ref d, (uint)0);
...
SafeNativeMethods.EnumDisplaySettings(d.DeviceName, -2, ref mode0);
...
SafeNativeMethods.DEVMODE dm = mode0;

dm.dmPosition.x = 1440;
dm.dmFields = SafeNativeMethods.DM_POSITION;
long result = SafeNativeMethods.ChangeDisplaySettingsEx(d.DeviceName, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_NORESET| SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero);
result = SafeNativeMethods.ChangeDisplaySettingsEx(null, ref dm, IntPtr.Zero, SafeNativeMethods.CDS_UPDATEREGISTRY, IntPtr.Zero);

即使我得到0(这意味着成功),这也不会影响我的辅助监视器。

我做错了什么?

谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您需要设置的不仅仅是位置字段,您可以从EnumDisplaySettings获取当前设置(至少尺寸和颜色,也可以刷新率)

答案 1 :(得分:0)

我自己没有尝试过,但似乎this forum的人们有一个线索。代码不是C#,但这是可以理解的。