C语言关机

    技术2022-05-20  40

    定时开关机

     

    头文件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, "d : d : d", 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:关闭显示器


    最新回复(0)