【声明】CSDN只做转发不做时时更新,最新博客请关注博客园 C# 息屏操作出现闪屏 - 唐宋元明清2188 - 博客园
windows大屏使用场景,关闭显示器是一个常用操作。
操作系统提供了相应的API,应用层调用:
1 //广播消息,所有顶级窗体都会接收 2 private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff); 3 //系统消息 4 private const uint WM_SYSCOMMAND = 0x112; 5 //关闭显示器的系统命令 6 private const int SC_MONITORPOWER = 0xF170; 7 //2为PowerOff, 1为省电状态,-1为开机 8 private const int MonitorPowerOff = 2; 9 // 定义Win32 API中的SendMessage函数 10 [DllImport("user32.dll",CharSet = CharSet.Auto)] 11 private static extern IntPtr SendMessage(IntPtr hWnd, uint hMsg, int wParam, int lParam); 12 private void SendMessage_OnClick(object sender, RoutedEventArgs e) 13 { 14 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff); 15 }
以上是息屏的实现。但经测试验证,上面方案有较大概率导致整机时序信号反复