3

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

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

我试过:以编程方式设置光标;使用“发送密钥”;甚至调用 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 回答