所以我的Vista机器设置10分钟后,以它的显示器关掉。 (注:机不暂停,或休眠)

我有一个.NET应用程序的运行,需要“唤醒”的系统在指定的时间。作为一个人,你只需移动鼠标或按任意键。如何做到这一点编程?

我试着:编程设置光标;使用 “的SendKeys”;甚至pinvoking CreateWaitableTimer非暂停(即使它没有中止),希望将触发东西。

理想情况下在C#代码将是巨大的,但正确的运API就足够了。

预先非常感谢。

有帮助吗?

解决方案

您应该能够通过发送系统命令消息如下来控制显示器的电源。请注意,这是在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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top