我在google上发现了这个:
版本1:
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); //turn off
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); //turn on
第2版:
HWND h = FindWindow(0, 0);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
SendMessage(h, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
在我的笔记本电脑上(Win8.1 + Visual Studio 2010): 对于这两个版本,岔路都有效,但是转弯不起作用。当执行turnon代码时,屏幕会立即打开然后再关闭。
另一个有趣的事情: 在我的桌面(Win8.1 + VS2013)上,程序将停留在版本1的任何一行。但是,它可以通过版本2.关闭工作,但打开完全无效。
答案 0 :(得分:5)
WM_SYSCOMMAND
SC_MONITOR
与void Main( object )
{
int MOUSEEVENTF_MOVE = 0x0001;
mouse_event(MOUSEEVENTF_MOVE, 0, 1, 0, UIntPtr.Zero);
System.Threading.Thread.Sleep( 40 );
mouse_event(MOUSEEVENTF_MOVE, 0, -1, 0, UIntPtr.Zero);
}
似乎已被打破以唤醒显示器,而睡眠效果正常。
您也可以在核心系统级别触发小鼠标移动以正确触发唤醒,C#中的示例代码可以轻松移植到C ++:
mouse_event
Documentation。您正式使用SendInput,但{{1}}不会很快到达任何地方(自Vista以来它已被半推荐)。