私の現在の C++ プロジェクトでは、多数のコンピューターで接続されアクティブになっているモニターごとに一意の文字列を検出する必要があります。
研究は2つの選択肢を指摘しています
WMI を使用して、すべてのアクティブなモニターについて Win32_DesktopMonitor を照会します。モニターを一意に識別するために PNPDeviceID を使用します。
EnumDisplayDevices API を使用し、掘り下げてデバイス ID を取得します。
デフォルトのプラグ アンド プレイ ドライバーを使用するモニターは、モニター名として「デフォルトのプラグ アンド プレイ モニター」として一般的な文字列を報告するため、一意のモデル識別にデバイス ID を使用することに関心があります。
WMI メソッドで問題が発生しています。Vista マシンで 1 つのモニターしか返されないようです。doco を見ると、非 WDDM デバイスでは期待どおりに動作しないことがわかりました。
EnumDisplayDevices は、バックグラウンド サービス (特に Vista で) から実行するときに少し問題があるようです。セッション 0 にある場合、情報は返されません。
他の誰かが同様のことをしなければなりませんでしたか (接続されているすべてのアクティブなモニターに対して一意のモデル文字列を見つけますか?)
どのアプローチが最も効果的でしたか?