為了響應國家節約號召,
為國家電力貢獻自己的一點微薄之力,
本人決定在吃飯及午休、外出時,
關閉顯示器,
同時也延長了筆記本的使用壽命。。
當然在台式機上,直接關閉顯示器電源即可。
在筆記本上,利用鍵盤的FN快速鍵,只能關閉螢幕背光,
不能關掉主板給螢幕的訊號輸出。仔細看仍然會看到暗淡的案頭。
本人建議:各位不要經常性的讓筆記本待機。。對硬碟影響很大的。。。
在案頭顯示內容的“電源管理”裡面,我們可以調整電源配置,
設定電腦在X分鐘後關閉監視器,硬碟,待機。等等。。。
命令列為:
powercfg /change "電源配置名稱" /moniter-timeout-ac 1
這個比較麻煩,還需知道當前使用的電源配置。
不過,windows為我們提供了一個API。可以實現即時關閉監視器。
LRESULT WINAPI SendMessage( __in HWND hWnd, __in UINT Msg, __in WPARAM wParam, __in LPARAM lParam);
詳見:http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx
此API在平台叫用中,如下籤名:
//C# Signature:[DllImport("user32.dll", CharSet = CharSet.Auto)]static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
此方法的各個參數類型有一些重載,一般還是建議用IntPtr,否則,在64位平台OR其它情況下可能會崩潰~
我們需要傳給Msg 一個系統訊息,即:WM_SYSCOMMAND
然後是附加資訊,比如螢幕保護裝置:SC_SCREENSAVE,監視器電源:SC_MONITORPOWER
WM_SYSCOMMAND有如下取值:
enum SysCommands : int { SC_SIZE = 0xF000, SC_MOVE = 0xF010, SC_MINIMIZE = 0xF020, SC_MAXIMIZE = 0xF030, SC_NEXTWINDOW = 0xF040, SC_PREVWINDOW = 0xF050, SC_CLOSE = 0xF060, SC_VSCROLL = 0xF070, SC_HSCROLL = 0xF080, SC_MOUSEMENU = 0xF090, SC_KEYMENU = 0xF100, SC_ARRANGE = 0xF110, SC_RESTORE = 0xF120, SC_TASKLIST = 0xF130, SC_SCREENSAVE = 0xF140, SC_HOTKEY = 0xF150,//#if(WINVER >= 0x0400) //Win95 SC_DEFAULT = 0xF160, SC_MONITORPOWER = 0xF170, SC_CONTEXTHELP = 0xF180, SC_SEPARATOR = 0xF00F,//#endif /* WINVER >= 0x0400 *///#if(WINVER >= 0x0600) //Vista SCF_ISSECURE = 0x00000001,//#endif /* WINVER >= 0x0600 *//* * Obsolete names */ SC_ICON = SC_MINIMIZE, SC_ZOOM = SC_MAXIMIZE,}
於是有了下面的調用:
private const uint WM_SYSCOMMAND = 0x0112;private const uint SC_MONITORPOWER = 0xF170;//關閉SendMessage(this.Handle,WM_SYSCOMMAND , (IntPtr)SC_MONITORPOWER,2);//開啟SendMessage(this.Handle,WM_SYSCOMMAND , (IntPtr)SC_MONITORPOWER,-1);
希望大家在工作之餘,可以為社會做點小小的貢獻~
自己做好的小程式,可以鎖屏後自動關屏:連結地址如下
C#實現自動鎖屏+關屏