3

そのため、私の Vista マシンは、10 分後にモニターをオフにするように設定されています。(注: マシンはサスペンドまたは休止状態ではありません)

指定した時間にシステムを「起動」する必要がある .Net アプリケーションを実行しています。人間として、マウスを動かすか、キーを押すだけです。プログラムでこれを行うにはどうすればよいですか?

私は試しました:プログラムでカーソルを設定します。「SendKeys」を使用。そして、それが何かを引き起こすことを期待して、CreateWaitableTimer をピンボークして (一時停止されていなくても) 一時停止を解除します。

理想的には、C# のコードが優れていますが、適切な Win API で十分です。

よろしくお願いします。

4

1 に答える 1

3

次のようにシステムコマンドメッセージを送信することで、モニターの電源を制御できるはずです。これは XP でテストされていることに注意してください。Vista では多少変更されている可能性があるため、テストしてお知らせください。

このコードは VB ですが、使用されている Win32 API 呼び出しを確認できます。メッセージを処理するために作成されたウィンドウがコードで必要になるように、関数にウィンドウ ハンドルを渡す必要があります (デフォルトのウィンドウ処理関数に渡すだけです)。

Const SC_MONITORPOWER As Integer = &HF170
Const WM_SYSCOMMAND As Short = &H112S
Private Function SendMessage(
    ByVal Handle As Int32,
    ByVal wMsg As Int32,
    ByVal wParam As Int32,
    ByVal lParam As Int32) As Int32
End Function
Sub MonStandBy(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 1)
End Sub
Sub MonOff(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
End Sub
Sub MonOn(hWnd as Int32)
    SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1)
End Sub
于 2008-12-02T01:05:28.297 に答える