如何看你的電腦開了多久了?
今天下午我睡了一會,起來見哥在玩遊戲,我就問他玩了多久了,我要用電腦啦,他笑著說只玩了一會而已,不過還
是儲存了遊戲讓我用,但我有點不相信他剛開的機,一摸鍵盤這位置的溫度就知道開了不短啦,我就想我怎麼才能
搞一個程式,一運行就可以告訴我電腦開機多久啦,我想,系統自身好像沒有這個功能,我可以寫一個小程式,在開
機時自動運行,運行時把當時的系統時間記錄下來,這樣我就可以隨時得到系統的已已耗用時間啦,不過這樣一個程
序老在記憶體中獃著,雖說肯定不會大,但畢竟不是正確的方向.我又想,我可以在開機時只運行一下,然後把擷取到
的系統時間存在註冊表中,再次啟動程式時,做個減法,不就可以了.不過我想這種資訊系統應該是記錄在案的吧,
所以去查MSDN,發現有個叫GetTickCount()的函數可以擷取系統自開機到當前的系統啟動並執行milliseconds數.不
過這個函數返回一個32位的DWORD值,只能存放小於49.7天的時間值.在MSDN介紹這個函數的頁面中有這麼一段話
:
To obtain the time elapsed since the computer was started, retrieve the System Up Time counter in
the performance data in the registry key HKEY_PERFORMANCE_DATA. The value returned is an 8-byte
value. For more information, see Performance Monitoring.
呵呵,系統果然在註冊表中自動記錄了這個資訊,不過註冊表操作我還不會,就先用GetTickCounter()實現如下:
void CTimeElapsedDlg::OnOK()
{
// TODO: Add extra validation here
DWORD elapsedTime;
elapsedTime=GetTickCount()/1000; //get seconds
UINT hours=elapsedTime/3600;
UINT minutes=elapsedTime%3600/60;
UINT seconds=elapsedTime%3600%60;
char times[100];
sprintf(times,"系統已運行%d小時%d分鐘%d秒!",hours,minutes,seconds);
MessageBox(times);
CDialog::OnOK();
}
下一步,我想直接在對話方塊中輸出那句話,而不是用一個MessageBox!
現在我的折衷的辦法是在下面放一個靜態文字框,預設標題是Null 字元串,等到要顯示時就更新靜態文本的標題,呵
呵 !
GetDlgItem(IDC_TIME)->SetWindowText(times);
這樣就可以.下次知道如何在對話方塊介面上輸出文字時再改寫它.