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 になったとしても (成功を意味します)、セカンダリ モニターには影響しません。

私は何を間違えましたか?

ありがとうございました。

4

2 に答える 2

1

Position フィールドだけでなく、おそらく EnumDisplaySettings から現在の設定を取得する必要があると思います (少なくともサイズと色、おそらくリフレッシュ レートも)

于 2009-07-07T04:16:55.500 に答える
0

私は自分で試したことはありませんが、このフォーラムにいる人たちは手がかりを持っているようです。コードは C# ではありませんが、理解できます。

于 2009-07-05T20:48:14.927 に答える