题
所以我的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
不隶属于 StackOverflow