代码之家  ›  专栏  ›  技术社区  ›  Nik

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

  •  3
  • Nik  · 技术社区  · 17 年前

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

    我有一个。网络应用程序正在运行,需要在指定时间“唤醒”系统。作为一个人,你只需移动鼠标或按键。我该如何通过编程来实现这一点?

    我尝试过:用程序设置光标;使用“发送密钥”;甚至将CreateWaitableTimer设置为取消暂停(即使它没有暂停),希望这会触发一些事情。

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

    提前感谢。

    1 回复  |  直到 17 年前
        1
  •  3
  •   paxdiablo    17 年前

    您应该能够通过发送以下系统命令消息来控制监视器电源。请注意,这是在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