请教如何在程序退出时,关闭计算机!

解决方案 »

  1.   

    BOOL ExitWindowsEx(
      UINT uFlags,       // shutdown operation
      DWORD dwReserved   // reserved
    );
    在程序退出时调用该函数,将uFlags的值设为EWX_POWEROFF就可以了。
      

  2.   

    BOOL WINAPI PL_ExitWindow(UINT uFlag)
    {
    HANDLE hToken = NULL;
    TOKEN_PRIVILEGES tkp;
    BOOL fResult = FALSE;
    if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    {
    if(LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid))
    {
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
    if(AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES) NULL, 0))
    {
    return ::ExitWindowsEx(uFlag, 0);
    }
    }
    }

    return ::ExitWindowsEx(uFlag, 0);
    }强迫关机:
    PL_ExitWindow(EWX_FORCE | EWX_POWEROFF);
    强迫重启:
    PL_ExitWindow(EWX_FORCE | EWX_REBOOT);强迫注销:
    PL_ExitWindow(EWX_FORCE | EWX_LOGOFF);如果不强迫它,则去掉EWX_FORCE 标志.