2

複数のモニターがマシンに接続されています。そのうちの 2 つが外部ビデオ アダプターに接続され、2 つが内部ビデオ チップに接続されています。どのモニターが外部ビデオ アダプターに接続されているかを知る必要があります。それを見つける方法を教えてください。

EnumDisplayDevicesを調べたところ、 DISPLAY_DEVICE構造にDISPLAY_DEVICE_PRIMARY_DEVICEフラグがあり、どのビデオ デバイスがプライマリ画面であるかを表示できます。しかし、タスク全体を解決するには十分ではありません。

アップデート:

私は試してみましたがEnumDisplayDevices、そのDISPLAY_DEVICEオブジェクトにはフィールドがありますDeviceString

DISPLAY_DEVICE DispDev; 
ZeroMemory(&DispDev, sizeof(DispDev));
DispDev.cb = sizeof(DispDev); 
DWORD nDeviceIndex = 0;
EnumDisplayDevices(NULL, nDeviceIndex, &DispDev, 0);

// DispDev.DeviceString now is what I need

これは、ビデオ アダプターの名前で構成されます (例: ) Intel(R) HD Graphics 4000。ただし、名前は異なる場合があります。統合ビデオと外部ビデオを区別する方法

4

1 に答える 1

2

この概念は Windows には存在しないため、どのグラフィックス カードが内部または外部であるかを知る方法はありません。名前から推測することはできますが、それはおそらく、次のグラフィック カードの世代/ネーミング スキームで動作しなくなる可能性があります。

あなたができる唯一のことは、グラフィックカードを持っているユーザーにリストを提示し、アプリケーションを実行するためにどのカードを使用したいかをユーザーに指摘させることです。

これは、内蔵グラフィックス カードの方がソフトウェアの実行に優れている/高速である/適している場合にも当てはまります。

于 2013-09-23T13:38:11.247 に答える