2009-07-05 43 views
4

我希望能够在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的结果(这意味着成功的)。

我做错了什么?

谢谢。

回答

1

我认为你需要设置更多的不仅仅是位置字段,你很可能得到EnumDisplaySettings当前设置(至少在大小和颜色,也许刷新率也)

0

我还没有尝试过自己,但似乎在this forum的人都有线索。该代码不是C#,但它是可以理解的。

相关问题