定時開關機
頭文件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:關閉顯示器