質問

私は、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);

これは私が(SUCCESSFULを意味する)、結果として0を取得した場合でも、私のセカンダリモニタには影響しません。

私が間違って何をした?

ありがとうございます。

役に立ちましたか?

解決

私はあなただけPositionフィールド以上に設定する必要があると思う、あなたはおそらく、

(多分もリフレッシュレート、少なくとも、サイズや色)EnumDisplaySettingsから現在の設定を得ることができます

他のヒント

このフォーラムを、私はそれを自分自身を試していないが、それはで人々を超えるようですには手掛かりを持っています。コードは、C#ではありませんが、それは理解できるのです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top