13


5

モニター情報を取得するにはどうすればよいですか?

Windowsの表示プロパティ(#1、2 …​に表示されているモニターIDを取得しようとしています。 など)、しかし、私は方法を見つけることができないようです。 _EnumDisplayMonitors_と_EnumDisplayDevices_を使用してみました。 どちらも「\。\ DISPLAY1」のようなものを返します。 ただし、この数は、特に2台のビデオカードを使用して3台以上のモニターを駆動している場合、Windowsで表示される数と必ずしも一致しません。 この情報を取得するために欠落しているAPIコールはありますか、それともレジストリまたは他の場所から取得する方法はありますか? ありがとうございます。

私はこれらの方法を試しました:+ * Win32:* EnumDisplayMonitors、EnumDisplayDevices:これらのどちらもアクティブではないモニターを返し、どちらも正しいIDを返しません。 + * WMI:* "select * from Win32_DesktopMonitor"はすべてのモニターを返さず、IDもありません。 + *レジストリ:*さまざまな場所でモニターを見つけましたが、探している情報がどこにもありません。

任意の助けは大歓迎です。 :)

*更新:*これらは私が探しているモニター番号です:image:https://images.binaryfortress.com/External/StackOverflow/MonitorNumbers.jpg [alt text]

3 Answer


1


目的によっては、ドライバーベースのソリューションを検討することもできます。 nVidiaには、コントロールパネルのほとんどの機能にアクセスできる適切なライブラリがあることがわかっています。


1


EnumDisplayDevicesを2回呼び出しましたか? 次のようにしてください。

while (EnumDisplayDevices(0, dev, &dd, 0))
{
...
  while (EnumDisplayDevices(dd.DeviceName, devMon, &ddMon, 0))
  {
   ...
  }
}


0


推測ではありますが、WindowsはWindowsの表示プロパティに「iDevNum + 1」を表示しているように見えます。