windows system info

來源:互聯網
上載者:User
(1).
SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1);//關閉顯示器
SendMessage(Application.Handle,WM_SYSCOMMAND,SC_MONITORPOWER,-1);//開啟顯示器

SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 0);//關閉顯示器
SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1);//開啟顯示器

::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_MONITORPOWER,1);//關閉顯示器
::SendMessage(GetSafeHwnd(),WM_SYSCOMMAND,SC_MONITORPOWER,-1);//開啟顯示器

Monitor.ShutDown()

(2)
開始照著網上很多文章說的 SendMessagege(GetDesktopWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 2); 發現並不能關閉顯示器,我找了半天都沒找出問題的所在。顯示器關閉後程式就可以退出了,之後如果有鍵盤後者滑鼠的動作顯示器也會自動開啟。WNDCLASS wndclass ;wndclass.hInstance = hInstance ;wndclass.lpszClassName = szAppName ;hwnd = CreateWindow(szAppName, TEXT(/"LcdDown/"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ;

(3)
編寫諸如監控、多媒體、大規模資料處理之類程式的時候,我們常常需要禁用螢幕保護裝置和電源管理,以確保程式的正常運行。一般來說,可以使用類比滑鼠鍵盤動作的辦法禁用95下的螢幕保護裝置和電源管理,但是同樣的方法應用到2000/NT,卻常常會無效,這和系統的設定有關係。
運用Windows平台SDK的介面API可以輕鬆的做到禁用螢幕保護裝置和電源管理,唯一的缺陷是這種方法無法應用到Windows95下的Win32應用程式中。以下,我將介紹具體方法。

   使用SystemParametersInfo這個API來實現對螢幕保護裝置和電源管理的禁用:
   BOOL SystemParametersInfo(  
       UINT     uiAction,       // system parameter to retrieve Or set
       UINT     uiParam,       // depends on action to be taken  
       PVOID     pvParam,       // depends on action to be taken
       UINT     fWinIni           // user profile update option
   );

   以下是禁用螢幕保護裝置的代碼:
   void DisableScrSaver()
   {
BOOL bScrActive;   
SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, &bScrActive, 0);
if(bScrActive)
{
       SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE, NULL, 0);
}   
   }
   以下是啟用螢幕保護裝置的代碼:
   void CNetRGCltDlg::EnableScrSaver()
   {
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE, NULL, 0);
   }
   由于禁用電源保護不可以在Win95下被Win32應用程式使用,所以要事先判斷當前作業系統是不是Win95,這裡假設已經用函數BOOL     IsWin95()實現。  
   以下是禁用電源保護的代碼:
   void DisablePmmSaver()
   {
//
//     由於電源管理的特殊性,不能直接用SPI_SETLOWPOWERACTIVE命令字實現,而是要設定延時
//   
SystemParametersInfo(SPI_GETLOWPOWERTIMEOUT,0,&m_nLowpowerTimeout,0);    
SystemParametersInfo(SPI_GETPOWEROFFTIMEOUT,0,&m_nPoweroffTimeout,0);   
SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,0,NULL, 0);   
SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,0,NULL, 0);
   }

   以下是啟用電源保護的代碼  
   void EnablePmmSaver()   
   {    
SystemParametersInfo(SPI_SETLOWPOWERTIMEOUT,m_nLowpowerTimeout,NULL,0);    
SystemParametersInfo(SPI_SETPOWEROFFTIMEOUT,m_nPoweroffTimeout,NULL,0);
m_nLowpowerTimeout = 0;   
m_nPoweroffTimeout = 0;   
   }    
   說明:
   1 m_nLowpowerTimeout和m_nPoweroffTimeout是用來儲存原先延時的變數,當恢複電源保護時要把電源保護延時設定回原來的值;   
   2 上面的代碼僅僅為了說明調用序列,實際應用時還要加上相當多的錯誤處理代碼,這裡忽略。    
   編寫諸如監控、多媒體、大規模資料處理之類程式的時候,我們常常需要禁用螢幕保護裝置和電源管理,以確保程式的正常運行。一般來說,可以使用類比滑鼠鍵盤動作的辦法禁用95下的螢幕保護裝置和電源管理,但是同樣的方法應用到2000/NT,卻常常會無效,這和系統的設定有關係。
   運用Windows平台SDK的介面API可以輕鬆的做到禁用螢幕保護裝置和電源管理,唯一的缺陷是這種方法無法應用到Windows95下的Win32應用程式中。以下,我將介紹具體方法。

我想通過程式設定關閉顯示器的時間,請問如何??
修改註冊表:
HKEY_LOCAL_MACHINE//System//CurrentControlSet//Control//Session Manager//Power//AcPolicy
HKEY_LOCAL_MACHINE//System//CurrentControlSet//Control//Session Manager//Power//DcPolicy
HKEY_USERS//.DEFAULT//Control Panel//PowerCfg//PowerPolicies//3//Policies
SystemParametersInfo, SystemParametersInfoByval
VB聲明
Declare Function SystemParametersInfo& Lib /"user32/" Alias /"SystemParametersInfoA/" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long)
Declare Function SystemParametersInfoByVal& Lib /"user32/" Alias /"SystemParametersInfoA/" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long)
說明
允許擷取和設定數量眾多的windows系統參數
傳回值
Long,非零表示成功,零表示失敗。會設定GetLastError
參數表
參數 類型及說明
uAction Long,指定要設定的參數。參考uAction常數表
uParam Long,參考uAction常數表
lpvParam Any,按引用調用的Integer、Long和資料結構。對於String資料,請用SystemParametersInfoByval函數。具體用法參考uAction常數表
fuWinIni Long,取決於不同的參數及作業系統,隨同這個函數設定的使用者配置參數儲存在win.ini或註冊表裡,或同時儲存在這兩個地方。這個參數規定了在設定系統參數的時候,是否應更新使用者佈建參數。可以是零(禁止更新),或下述任何一個常數:
SPIF_UPDATEINIFILE 更新win.ini和(或)註冊表中的使用者設定檔
SPIF_SENDWININICHANGE 倘若也設定了SPIF_UPDATEINIFILE,將一條WM_WININICHANGE訊息發給所有應用程式。否則沒有作用。這調訊息告訴應用程式已經改變了使用者配置設定
註解
在調用這個函數之前,特別要注意將lpvParam參數定義成正確的資料類型
====================================================================
uAction常數表——請參考SystemParametersInfo函數
請參考windows使用者手冊,瞭解關於這些參數以及註冊表或win.ini檔案的詳細情況。如參數不是為一個行動指定的,則沒有使用。在許多許多情況下系統參數都有自己對應的 GET 和 SET 行動;例如 SPI_GETACCESSTIMEOUT 和 SPI_SETACCESSTIMEOUT。在這些情況下,除非特別指明,否則它們之間唯一的區別就是一個用於取得資訊,另一個設定資訊。針對 SET 條目,只列出參數間的差異
常數 含義
SPI_GETACCESSTIMEOUT lpvParam是一個ACCESSTIMEOUT結構,其中要載入輔助訪問特性計時資訊。在調用函數之前,uParam必須設為ACCESSTIMEOUT結構的大小
SPI_GETANIMATION lpvParam是一個ANIMATIONINFO結構,將在其中載入視窗最小化和恢複時的動畫資訊。不能在NT 3.51中使用
SPI_GETBEEP lpvParam是一個Long型資料,若開啟了響鈴聲,則設為TRUE
SPI_GETBORDER lpvParam是一個Long型資料,用於接收一個乘數(倍數),對大小可變的視窗的邊框尺寸進行控制
SPI_GETDEFAULTINPUTLANG lpvParam是一個Long型資料,用於接收預設鍵盤配置的一個32位控制代碼。不能用於NT 3.51
SPI_GETDRAGFULLWINDOWS lpvParam是一個Long型資料,如在整個視窗上拖動,就會設為TRUE。如果只拖出了一個矩形輪廓,則為FALSE。要求NT 4.0 或 Windows 95支援。其中,Windows 95必須有Plus!支援,或直接安裝Windows 95 OSR2
SPI_GETFASTTASKSWITCH lpvParam是一個Long型資料,如允許快速任務切換,則為TRUE。在Windows 95 和 NT 4.0中肯定是TRUE
SPI_GETFILTERKEYS lpvParam是一個FILTERKEYS結構,用於裝載與鍵盤有關的輔助訪問特性資訊
SPI_GETFONTSMOOTHING lpvParam是一個Long型資料,如開啟了邊緣修飾特性(讓字型更圓潤),則為TRUE。只適用於 NT 4.0 和帶 Plus! 支援的 Windows 95
SPI_GETGRIDGRANULARITY lpvParam是一個Long型資料,會設為網格間隔尺寸值
SPI_GETHIGHCONTRAST lpvParam是一個HIGHCONTRAST結構,用於裝載與使用者顯示器有關的輔助訪問特性資訊。僅適用於Win95
SPI_GETICONMETRICS lpvParam是一個ICONMETRICS結構,用於裝載與表徵圖比例及排列有關的資訊。僅適用於Windows 95 及 NT 4.0
SPI_GETICONTITLELOGFONT lpvParam指向一個LOGFONT結構,設定內容取決於表徵圖標題採用的字型
SPI_GETICONTITLEWRAP lpvParam是一個Long型資料,如允許對表徵圖標題進行自動換行,則設為TRUE
SPI_GETKEYBOARDDELAY lpvParam是一個Long型資料,設為鍵盤重複延時
SPI_GETKEYBOARDPREF lpvParam是一個Long型資料,如使用者更喜歡用鍵盤而不是滑鼠,則設為TRUE。如這個參數為真,windows會顯示出附加的鍵盤介面資訊,只適用於win95
SPI_GETKEYBOARDSPEED lpvParam是一個Long型資料,設為鍵盤的重複速度
SPI_GETMENUDROPALIGNMENT lpvParam是一個Long型資料,若彈出式菜單靠左對齊(預設),則設為FALSE。否則為TRUE
SPI_GETMINIMIZEDMETRICS lpvParam是一個MINIMIZEDMETRICS結構,用於裝載與已最小化的視窗的比例及排列有關的資訊。僅適用於win95
SPI_GETMOUSE lpvParam是三元素Long數組的頭一個條目,條目0設為使用者配置MouseThreshold1欄位,條目1設為MouseThreshold2欄位,條目2設為MouseSpeed
SPI_GETMOUSEKEYS lpvParam是一個MOUSEKEYS結構,要在其中裝載與滑鼠有關的輔助訪問資訊。不能在 NT 3.51中使用
SPI_GETNONCLIENTMETRICS lpvParam是一個NONCLIENTMETRICS結構,要在其中裝載有關字型和環境有關的資訊;這些資訊會在描繪視窗非用戶端區域時涉及到,如邊框、標題等。只適用於win95
SPI_GETSCREENSAVEACTIVE lpvParam指向一個整數;倘若螢幕保護裝置程式處於活動狀態,則設為TRUE;否則設為FALSE
SPI_GETSCREENSAVETIMEOUT lpvParam指向一個整數;它設為螢幕保護裝置延時(以秒為單位)
SPI_GETSERIALKEYS lpvParam是一個SERIALKEYS結構,用於裝載與輸入裝置(用於類比鍵盤輸入)有關的輔助訪問特性資訊。只適用於win95
SPI_GETSHOWSOUNDS lpvParam是一個Long型資料,倘若應用程式應該用可視線索來代替聲音,則設為TRUE。它的作用與GetSystemMetrics函數的SM_GETSHOWSOUNDS選項是相同的
SPI_GETSNAPTODEFBUTTON lpvParam是一個Long型資料,倘若滑鼠會自動移到新對話方塊的預設按鈕,則設為TRUE。只適用於NT 4.0
SPI_GETSOUNDSENTRY lpvParam是一個SOUNDSENTRY結構,用於裝載讓windows提供可視標誌(而不是系統聲音)時涉及的輔助訪問特徵資訊。調用之前,必須將uParam設為SOUNDSENTRY結構的長度
SPI_GETSTICKYKEYS lpvParam是一個STICKYKEYS結構,用於裝載允許一名使用者順序按鍵(而不是同步選取)時涉及的輔助訪問特徵資訊。同時按鍵的例子包括Shift+, Ctrl+, Alt+ 等。調用之前,必須將uParam設為STICKYKEYS結構的長度
SPI_GETTOGGLEKEYS lpvParam是一個TOGGLEKEYS結構,要在其中裝載按下一個開關鍵(NumLock,CapsLock,ScrollLock)後播放聲音提示時涉及的輔助訪問特徵資訊。windows會用一個不同的聲音指出開或關狀態。調用之前,必須將uParam設為TOGGLEKEYS結構的長度
SPI_GETWORKAREA lpvParam是一個RECT結構,用於裝載螢幕的工作區
SPI_ICONHORIZONTALSPACING 如lpvParam為NULL,則uParam代表案頭表徵圖新的水平間隔距離,以像素為單位
SPI_ICONVERTICALSPACING 與SPI_ICONHORIZONTALSPACING相似,只不過指定表徵圖的垂直間距
SPI_LANGDRIVER lpvParam是一個字串,用於容納新的語言驅動程式檔案的名稱
SPI_SETACCESSTIMEOUT 與SPI_GETACCESSTIMEOUT的參數相同
SPI_SETANIMATION 與SPI_GETANIMATION的參數相同
SPI_SETBEEP uParam為TRUE時開啟響鈴,FALSE關閉
SPI_SETBORDER uParam代表一個乘數,用於控制尺寸可變的的視窗邊框的大小
SPI_SETDEFAULTINPUTLANG 與SPI_GETDEFAULTINPUTLANG的參數相同
SPI_SETDESKPATTERN 從註冊表或win.ini中強制視窗恢複當前的案頭方案
SPI_SETDESKWALLPAPER lpvParam代表一個字串,用於容納作為案頭牆紙使用的一個位元影像檔案的名稱
SPI_SETDOUBLECLICKTIME uParam代表連續兩次單擊被當作一次雙擊處理時需要間隔的時間(以毫秒為單位)
SPI_SETDOUBLECLKHEIGHT uParam代表新的雙擊高度,可參考GetSystemMetrics函數的註解
SPI_SETDOUBLECLKWIDTH uParam代表新的雙擊寬度,可參考GetSystemMetrics函數的註解
SPI_DRAGFULLWINDOWS uParam為TRUE時開啟全視窗拖動,否則為FALSE。僅適用於win95
SPI_SETDRAGHEIGHT uParam代表一個矩形的高度(以像素為單位),用於決定拖動操作何時開始。只適用於win95
SPI_SETDRAGWIDTH uParam代表一個矩形的寬度(以像素為單位),用於決定拖動操作何時開始。只適用於win95
SPI_SETFASTTASKSWITCH uParam為TRUE時開啟快速任務切換,FALSE則關閉
SPI_FILTERKEYS 參數與 SPI_GETFILTERKEYS 相同
SPI_SETFONTSMOOTHING uParam為TRUE時開啟字型修飾(圓潤)。只能在NT 4.0 和得到 Plus! 支援的 Win95(或 Windows 95 OSR2)中使用
SPI_SETGRIDGRANULARITY uParam代表新的網格間距
SPI_SETHIGHCONTRAST 參數與 SPI_GETHIGHCONTRAST 相同
SPI_SETICONMETRICS 參數與 SPI_GETICONMETRICS 相同
SPI_SETICONTITLELOGFONT lpvParam是一個LOGFONT結構,用於定義表徵圖標題採用的字型。uParam指定LOGFONT結構的大小。如兩者均為NULL,則採用系統啟動時定義的字型
SPI_SETICONTITLEWRAP uParam為TRUE時開啟表徵圖標題自動換行
SPI_SETKEYBOARDDELAY uParam代表新的鍵盤重複延時
SPI_SETKEYBOARDPREF 若uParam為TRUE,表明使用者相比鍵盤和滑鼠更喜歡用前者。參考SPI_GETKEYBOARDPREF
SPI_SETKEYBOARDSPEED uParam代表新的鍵盤重複速度
SPI_SETLANGTOGGLE 令視窗從系統註冊表中重新裝載熱鍵資訊,以便在鍵盤配置之間交換
SPI_SETLOWPOWERACTIVE uParam為TRUE時允許節能螢幕保護裝置程式模式。只適用於win95
SPI_SETLOWPOWERTIMEOUT uParam代表新的節能螢幕保護裝置程式延時。只適用於win95
SPI_SETMENUDROPALIGNMENT uParam為FALSE時設定快顯功能表靠左對齊,TRUE則靠右對齊
SPI_SETMINIMIZEDMETRICS 參數與SPI_GETMINIMIZEDMETRICS一樣
SPI_SETMOUSE lpvParam是一個三元素整數數組的頭一個條

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.