网络上一大把教你如何从C#程序里面关闭屏幕的例子,但是是有问题,如果用广播的消息,成屏幕再次亮起的时候,C#程序会成为”未响应“。废话不多说,上例子,希望对大家有用。
private const uint WM_SYSCOMMAND = 0x112; //系统消息
private const int SC_MONITORPOWER = 0xF170; //关闭显示器的系统命令
private const int MonitorPowerOff = 2; //2为PowerOff, 1为省电状态,-1为开机
private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);//广播消息,所有顶级窗体都会接收 (重点)消息的第一个参数不能用这个,如果用了这个,等屏幕亮起的时候你的程序会编程无响应,具体原因未知,请大神指点。
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
private void pbx_shutdown_Click(object sender, EventArgs e)
{
shutDownScreen();
}
private void shutDownScreen()
{
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);
isShutDownScreen = true;
unuseTime = 0;
}
private void resetUse()
{
unuseTime = 0;
isShutDownScreen = false;
}