如题~

解决方案 »

  1.   

    ExitWindow(...)MSDN说明:It sends the WM_QUERYENDSESSION message to determine if they can be terminated.Expamle:
    // Log off the current user. 
    ExitWindows(0, 0);  
    // Process the message in the application's window procedure. 
    case WM_QUERYENDSESSION:  

        int r; 
        r = MessageBox(NULL, "Shut down?","WM_QUERYENDSESSION", MB_YESNO); 
     
        // Return TRUE to allow shutdown, FALSE to stop. 
     
        return r == IDYES; 
        break; 

      

  2.   

    You can use the ExitWindowsEx function to shut down the system. Shutting down flushes file buffers to disk and brings the system to a condition in which it is safe to turn off the computer. Windows NT/2000/XP: The following example enables the SE_SHUTDOWN_NAME privilege and then shuts down the system. HANDLE hToken; 
    TOKEN_PRIVILEGES tkp; 
     
    // Get a token for this process. 
     
    if (!OpenProcessToken(GetCurrentProcess(), 
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
        error("OpenProcessToken"); 
     
    // Get the LUID for the shutdown privilege. 
     
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
            &tkp.Privileges[0].Luid); 
     
    tkp.PrivilegeCount = 1;  // one privilege to set    
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
     
    // Get the shutdown privilege for this process. 
     
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
            (PTOKEN_PRIVILEGES)NULL, 0); 
     
    // Cannot test the return value of AdjustTokenPrivileges. 
     
    if (GetLastError() != ERROR_SUCCESS) 
        error("AdjustTokenPrivileges"); 
     
    // Shut down the system and force all applications to close. 
     
    if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) 
        error("ExitWindowsEx"); 
    For more information about setting security privileges, see Privileges.