C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 121 を表示中)
■72684 / )  Re[1]: C++(MFC)でモニタ情報の取得
□投稿者/ とっちゃん (241回)-(2014/07/04(Fri) 18:07:23)
とっちゃん さんの Web サイト
No72681 (nobb さん) に返信

接続されているモニタの個数は
GetSystemMetrics(SM_CMONITORS) で調べられます。

自分で試した範囲では名、EnumDisplayDevices() が 0を返してきたところでループを終了すれば
余計なものは表示しませんでしたけど?

形としては、
while( EnumDisplayDevices( nullptr, count++, &device, nullptr ) )
{
/// ここでデバイスの内容表示とか
}
という感じですね。

モニター名(たぶん、ディスプレイの設定のところで出てくる識別名だと思いますが。。。)は
APIレベルでは取れないみたいです。
まず、何よりもデバイスマネージャが表示してくれないので。。。汎用的な手段では取得不可能ですね。

ディスプレイドライバ経由で情報は取れると思いますが、その場合はドライバメーカーさんに問い合わせてみないと
わかりません(APIとして公開しているかどうかのレベルから入るので、情報があってもNDAで公開されることはないでしょう)。

あと、こちらもとれる情報に変わりは大差ありませんが、
EnumDisplayDevices ではなく、EnumDisplayMonitors() APIを使うという方法もあります。

EnumDisplayMonitors( nullptr, nullptr, enumProc, 0 );
という、形で呼び出せば(enumProcは自前定義のコールバックプロシージャ)、接続されているすべてのモニタの情報にアクセスできます。
こちらは、モニタの接続情報をもとにいろいろ。。。というパターンで使えます。

モニター情報を取得して何がしたいのかを書くともう少し望む回答が得られるかもしれません。

が、もうちょっと自力で調べる努力はしたほうがいいと思います。
特に、APIとかの使い方については、リファレンスをまず読むという癖を今のうちにつけておかないと、後々苦労することになりますよ。
今回のようなマルチモニタあたりなら、それなりに調べたことがある人も多いと思いますが
これが、聞いたこともないようなAPIのこととなると、質問されても誰も答えてくれません。

返信 編集キー/


管理者用

- Child Tree -