如何用C# 關閉顯示器(監視器)

來源:互聯網
上載者:User

為了響應國家節約號召,

為國家電力貢獻自己的一點微薄之力,

本人決定在吃飯及午休、外出時,

關閉顯示器,

同時也延長了筆記本的使用壽命。。

當然在台式機上,直接關閉顯示器電源即可。

在筆記本上,利用鍵盤的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#實現自動鎖屏+關屏
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.