private void SetPanelStatus() { Win32.DISPLAY_DEVICE lpDisplayDevice1 = new Win32.DISPLAY_DEVICE(); lpDisplayDevice1.cb = Marshal.SizeOf <Win32.DISPLAY_DEVICE>(lpDisplayDevice1); try { for (uint iDevNum1 = 0; Win32.EnumDisplayDevices((string)null, iDevNum1, ref lpDisplayDevice1, 0U); ++iDevNum1) { if ((lpDisplayDevice1.StateFlags & 1) == 1) { Console.WriteLine("{0}, {1}", (object)lpDisplayDevice1.DeviceName, (object)lpDisplayDevice1.StateFlags); Win32.DISPLAY_DEVICE lpDisplayDevice2 = new Win32.DISPLAY_DEVICE(); lpDisplayDevice2.cb = Marshal.SizeOf <Win32.DISPLAY_DEVICE>(lpDisplayDevice2); for (uint iDevNum2 = 0; Win32.EnumDisplayDevices(lpDisplayDevice1.DeviceName, iDevNum2, ref lpDisplayDevice2, 1U); ++iDevNum2) { if ((lpDisplayDevice2.StateFlags & 1) == 1) { Console.WriteLine("{0}, {1}", (object)lpDisplayDevice2.DeviceName, (object)lpDisplayDevice2.StateFlags); IntPtr file = Win32.CreateFile(lpDisplayDevice2.DeviceID, 3221225472U, 1U, IntPtr.Zero, 3U, 0U, IntPtr.Zero); if (file != IntPtr.Zero) { bool state = false; Win32.GetDevicePowerState(file, out state); if (state) { Win32.SendMessage(-1, 274, 61808, 2); } else { Win32.mouse_event(1, 0, 1, 0, 0); Thread.Sleep(40); Win32.mouse_event(1, 0, -1, 0, 0); } Win32.CloseHandle(file); } } } } } } catch (Exception ex) { Console.WriteLine(string.Format("{0}", (object)ex.ToString())); } }
internal static extern bool EnumDisplayDevices( string lpDevice, uint iDevNum, ref Win32.DISPLAY_DEVICE lpDisplayDevice, uint dwFlags);