程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 如何用C# 關閉顯示器(監視器)

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

編輯:C#入門知識

為了響應國家節約號召,

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

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

關閉顯示器,

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

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

在筆記本上,利用鍵盤的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在平台調用中,如下簽名:

1 //C# Signature: 2 [DllImport("user32.dll", CharSet = CharSet.Auto)] 3 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,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved