我使用以下代码打开和关闭显示器:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MONITORPOWER = 0xF170;
private const int MonitorTurnOn = -1;
private const int MonitorShutoff = 2;
//Turn them off
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorShutoff);
//Turn them on
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorTurnOn);
这曾经按预期工作,但是在安装 Windows 8 之后(我认为这是原因,因为我看到其他人也有同样的问题)打开屏幕将不起作用。我仍然可以将其关闭,但无论我使用 MonitorTurnOn 运行 SendMessage() 多少次,我仍然必须移动鼠标或按下某个键才能重新打开监视器。
关于如何在 Windows 8 上进行这项工作的任何建议?