C語言關機

定時開關機

 

頭文件windows.h

 

BOOL ExitWindowsEx(

    UINT uFlags,

    DWORD dwReason

};

 

uFlags的值:

EWX_LOGOFF,0,註銷

EWX_SHUTDOWN,1,關機

EWX——REBOOT,2,重啓

EWX_POWEROFF,8,斷開電源

EWX_FORCE,4,強制終止所有程序

EWX_FORCEIFHUNG,16,強制終止未響應的程序

 

後面的dwReason一般不指定

返回值爲0時表示失敗,非0時就表示已經開始執行關機操作

 

要指定時間關機 只需一個SetTimer函數即可

函數原型爲

UINT_PTR WINAPI SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);

其中,hwnd爲窗口句柄,nIDEvent爲定時器ID,uElapse微秒值,表示每隔多少微秒調用函數,lpTimerFunc回調函數

lpTimerFunc回調函數原型:

void CALLBACK lpTimerFunc(HWND hwnd, UIINT message, UINT iTimerID, DWORD dwTimer);

 

示例程序:

void CALLBACK MyTimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTimer)
{
 SYSTEMTIME stLocal;
 GetLocalTime(&stLocal);
 TCHAR CurrTime[20];
 wsprintf(CurrTime, "%02d : %02d : %02d", stLocal.wHour, stLocal.wMinute, stLocal.wSecond);
 SetDlgItemText(hwnd, IDC_EDITTIME, CurrTime);
 if (stLocal.wHour == 17 && stLocal.wMinute == 53)
  ExitWindowsEx(EWX_LOGOFF, 0);
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
 SetTimer(hwnd, 0, 1000, MyTimerProc);
    return TRUE;
}

程序將在17:53時註銷系統,並有一個名爲IDC_EDITTIME的控件每隔一秒顯示系統時間

 

關閉顯示器API

SendMessage(hwnd, WM_SYSCOMMAND, SC_MONITOROWER, 2);

 

WM_SYSCOMMAND:窗口消息,系統指令

SC_MONITORPOWER:系統指令,顯示電源

最後一個參數

-1:打開顯示器

1:低電狀態

2:關閉顯示器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章