マルチモニター設定で画面を特定して、その画面にリンクされたデータを保存しようとしています。再起動後も画面を確実に識別するにはどうすればよいですか?
私はScreen
.Net のクラスを認識してScreen.DeviceName
いますが、一貫して 1 つの画面を指していないようです (たとえば、新しいグラフィックス ドライバーをインストールした後)。
マルチモニター設定で画面を特定して、その画面にリンクされたデータを保存しようとしています。再起動後も画面を確実に識別するにはどうすればよいですか?
私はScreen
.Net のクラスを認識してScreen.DeviceName
いますが、一貫して 1 つの画面を指していないようです (たとえば、新しいグラフィックス ドライバーをインストールした後)。
EnumDisplayDevices
APIでDeviceIDを取得することでこれを解決しました。画面ごとに固有のようで、たとえばドライバーの更新後も変化しません。
WMI は、以前に試したときに問題外であり、マルチモニター設定で 1 つのモニターしか返されませんでした。
WinForms の代わりに WMI を試してください。
次の投稿は、モニターとその詳細を取得する方法を示しています (s. DisplayDetails クラスなど):モニター ID とシリアル番号
編集:
私のおすすめ:
using System.Management;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DesktopMonitor");
foreach (ManagementObject obj in searcher.Get())
Console.WriteLine("PNP Device ID: {0}", obj ["PNPDeviceID"]);