一旦关闭电源设置,如何唤醒我的Windows显示器?

时间:2008-12-02 00:03:05

标签: windows monitor

所以我的Vista机器设置为在10分钟后关闭它的显示器。 (注意:机器没有暂停或休眠)

我运行了一个.Net应用程序,需要在指定时间“唤醒”系统。作为人类,您只需移动鼠标或按键即可。我该如何以编程方式执行此操作?

我试过:以编程方式设置光标;使用“SendKeys”;并且甚至将CreateWaitableTimer用于取消挂起(即使它没有被暂停),希望这会触发一些东西。

理想情况下,c#中的代码会很棒,但正确的Win API就足够了。

非常感谢提前。

1 个答案:

答案 0 :(得分: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