原創文章,未賦予轉載複製的權利。如需轉載,請聯絡博主
通過C#控制顯示器的關閉和恢複
本文講述如何使用C#程式來控制顯示器的開啟與關閉
通常可以通過案頭屬性的電影管理來控制顯示器在電腦無使用者輸入若干時間後進入關閉狀態(如所示),這個功能不僅可以實現比螢幕保護裝置程式更好的對螢幕的保護,而且還可以節約很多電能,可以說是一個聰明環保的技術。不過在很多情況下你可能想馬上關閉顯示器,但讓主機一直開著聽聽mp3音樂或者下載什麼的,可惜的是windows沒有預設提供這個功能。
下面我們來做一個這樣的關閉程式。查詢msdn的api後發現,其實這個小功能實現起來非常簡單,利用WM_SYSCOMMAND訊息的SC_MONITORPOWER參數就可以控制顯示器的狀態。下面是完整的C#代碼,實現過程中使用了.net interop來發送我們的控制訊息。
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Runtime.InteropServices;
5 using System.Threading;
6
7 namespace ShutDownMonitor
8 {
9 class Program
10 {
11
12 static void Main(string[] args)
13 {
14 Console.WriteLine("Monitor is being shut off");
15 Thread.Sleep(1000);
16 Monitor.TurnOff();
17 Thread.Sleep(2000);
18 Monitor.TurnOn();
19 Console.WriteLine("Monitor is turned on");
20 }
21
22 }
23
24 class Monitor
25 {
26 [DllImport("user32.dll")]
27 public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
28 public static void TurnOn()
29 {
30 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
31 }
32
33 public static void TurnOff()
34 {
35 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
36 }
37
38 static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
39 const uint WM_SYSCOMMAND = 0x0112;
40 const int SC_MONITORPOWER = 0xf170;
41 }
42 }
43