ディスプレイの電源状態取得


omiomiomiomi  2004-11-01 21:25:38  No: 54951

ディスプレイの電源状態を調べたいです。GetDevicePowerStateを利用したいのですが、ディスプレイのデバイスハンドルを取得する方法が分かりません。また、他の方法があればお願いします。


シャノン  2004-11-05 02:15:48  No: 54952

CreateFile のファイル名の部分に "\\.\" に続けてデバイス名を記述することで開けると思います。
ただ、その記述するデバイス名をどうやって取得するのかが俺にはわかりません。

識者の方、フォローお願いします。


たく  2004-11-05 02:36:24  No: 54953

::CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
とか?


瀬戸っぷ  2004-11-05 06:39:47  No: 54954

> CreateFile のファイル名の部分に "\\.\" に続けてデバイス名を記述することで開けると思います。
> ただ、その記述するデバイス名をどうやって取得するのかが俺にはわかりません。

EnumDisplayDevices()でしょうか。
DISPLAY_DEVICE構造体のDeviceNameメンバにそれらしきモノが。
で、試そうとしましたが…管理権限の関係か失敗しました。
特権取得とかやったことないので、この先は試せていないです。


シャノン  2004-11-05 23:49:59  No: 54955

デバイス名は
SetupDiGetClassDevs
SetupDiEnumDeviceInterfaces
SetupDiGetDeviceInterfaceDetail
の各関数を使って取得できます。

サンプル:
http://support.microsoft.com/default.aspx?scid=kb;ja;264203

ただ、SetupDiEnumDeviceInterfaces 関数に渡す「デバイス インターフェイス クラス GUID」なるものがどこで定義されているのかわかりません。
DDK にでも載ってるんでしょうか…

ノート PC では "\\.\LCD" で開けるっぽい…?
http://support.microsoft.com/default.aspx?scid=kb;ja;843617

たくさん>
GetDevicePowerState の日本語ドキュメントには「デバイスコンテキスト」と書かれていますが、まず間違いなく誤訳だと思われます。


たく  2004-11-06 00:00:53  No: 54956

ですよね^^;

なんか変だなとは思ったけど、
これでうまくいったらラッキーだなとも思った^^;


シャノン  2004-11-06 00:19:14  No: 54957

確かに EnumDisplayDevices でもそれっぽいものが取れますね。
ただ、これを CreateFile で開く場合に必要な特権って
いわゆる SE_ナントカ_NAME じゃなくて、管理者権限、つまり
Administrators でログインしとけ、ってことなんじゃないでしょうか。

デバイスに関しては、ここで聞いたほうが「濃い」答えが得られるかもしれません
http://www.ouk.co.jp/ogawa/sforum/sfrm.html


omiomi  2004-11-12 00:58:29  No: 54958

みなさん。いろいろありがとうございました。
一応EnumDisplayDevices()でDISPLAY_DEVICE構造体の
DeviceStringメンバをCreateFileに適用できました。
ただ、その後GetDevicePowerStateを使うと
モニタの電源をOFFにしてもコンセントを抜いても
本体から取り外してもモニタの電源ONという結果になってしまいます。
分かりましたらよろしくお願いします。


ex  2005-04-11 22:47:14  No: 54959

はじめまして。同じことで悩んでいます。
omiomiさんはCreateFileできたということですが、
私のほうではCreateFileに失敗します。
どのように試したのかよろしければ教えてもらえないでしょうか。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加