【问题标题】:How do I wake up my Windows monitors once turned off by power settings?电源设置关闭后如何唤醒我的 Windows 显示器?
【发布时间】:2010-09-24 20:41:58
【问题描述】:

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

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

我尝试过:以编程方式设置光标;使用“发送密钥”;甚至调用 CreateWaitableTimer 来取消挂起(即使它没有被挂起),希望这会触发一些事情。

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

提前非常感谢。

【问题讨论】:

    标签: windows monitor


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多