C# 如何关闭屏幕(息屏)

网络上一大把教你如何从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;
        }
原文链接:,转发请注明来源!