電源が OFF 状態のディスプレイを 電源を On にする方法

タグの編集
投稿者 N88-BASIC  (社会人) 投稿日時 2016/1/22 14:33:23
Windows 10 Home(64bit,32Bit)のシステムに対して VS2015 Community(以下 VS)にてプログラムを作成しております。現状、一定時間が経過後ディスプレイの電源を OFF にする設定にて運用しておりますが、処理が長時間かかるアプリの場合にディスプレイの電源が OFF になり終了タイミングがつかみにくくなっております。警告音を出すようにしておりますが、ディスプレイのスピーカを利用する場合、音声も OFF になってしまうようです。

そこで、ディスプレイの電源をアプリにより ON 状態に移行後、警告音が出せれば、終了のタイミングがつかめると考えております。

上記環境にて、アプリによりディスプレイの電源を ON にする方法をご存知の方がいらっしゃいましたら、情報を提供いただければ幸いです。

以上 よろしくお願いします。
投稿者 ななしん  (社会人) 投稿日時 2016/1/22 15:01:48
私は試していないので分かりませんが、これが参考になりませんかね?
http://techracho.bpsinc.jp/baba/2009_12_11/745
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/22 15:10:21
こんな感じかな?

Imports System.Runtime.InteropServices
Module Display
    Public Enum PowerState As Integer
        PowerOn = -1
        LowPower = 1
        PowerOff = 2
    End Enum

    Public Sub SetPowerState(state As PowerState)
        Dim HWND_BROADCAST As New IntPtr(&HFFFF)
        Dim WM_SYSCOMMAND As New IntPtr(&H112)
        Dim SC_MONITORPOWER As New IntPtr(&HF170)

        PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, _
                    SC_MONITORPOWER, New IntPtr(state))
    End Sub

    <DllImport("user32")> _
    Private Function PostMessage( _
        hWnd As IntPtr, msg As UInteger, _
        wParam As IntPtr, lParam As IntPtr) As Boolean
    End Function
End Module
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2016/1/22 15:13:22
> Dim WM_SYSCOMMAND As New IntPtr(&H112)

型が違っていました。

Dim WM_SYSCOMMAND As UInteger = &H112UI
投稿者 N88-BASIC  (社会人) 投稿日時 2016/1/24 13:35:20
ななしん さん、魔界の仮面弁士 さん、ご回答ありがとうございました。

返信が遅れて申し訳ありませんでした。

魔界の仮面弁士さんのご紹介のプログラムでは、ななしん さんのご紹介の HP に記載されている事例

”Power On 後、すぐに Power Off に移行する”と同じ状態になりました。同 HP にはマウスを動かして Screen の Power On にする方法が記載されていましたが、C 言語のようで私には理解できませんでした。

VB のリファレンス(Microsoft の HP)を見ても、これも理解できませんでした。

実行結果がどう影響するかはわかりませんが、とりあえず、マウスを動かすとの例を参考に、

        SendKeys.Send("{HOME}") にて、Power On にすることができました。

最初は ESC を送っていたのですが、上記コマンドの直後に記述した MSGBOX 文が ESC を受け取ってしまい、終了してしまったため、 HOME を送るようにしました。

HOME がどのような影響を及ぼすかわかりませんが、しばらく様子を見ながら、マウスを動かす方法を模索したいと思います。

マウスを動かす方法について情報があれば、ご紹介いただければ幸いです。