过去在9X中我们常使用rundll32.exe user.exe,exitwindows关闭系统,调用rundll32.exe user.exe,exitwindowsexec就可以快速重启。怎么样用命令让电脑休眠?

解决方案 »

  1.   

    SetSuspendState
    The SetSuspendState function suspends the system by shutting power down. Depending on the Hibernate parameter, the system either enters a suspend (sleep) state or hibernation (S4). If the ForceFlag parameter is TRUE, the system suspends operation immediately; if it is FALSE, the system requests permission from all applications and device drivers before doing so.BOOL SetSuspendState (
      BOOL Hibernate,
      BOOL ForceCritical,
      BOOL DisableWakeEvent
    );
    Parameters
    Hibernate 
    [in] Specifies the state of the system. If TRUE, the system hibernates. If FALSE, the system is suspended. 
    ForceCritical 
    [in] Forced suspension. If TRUE, the function broadcasts a PBT_APMSUSPEND event to each application and driver, then immediately suspends operation. If FALSE, the function broadcasts a PBT_APMQUERYSUSPEND event to each application to request permission to suspend operation. 
    DisableWakeEvent 
    [in] If TRUE, the system disables all wake events. If FALSE, any system wake events remain enabled. 
    Return Values
    If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, call GetLastError.Res
    An application may use SetSuspendState to transition the system from the working state to the standby (sleep), or optionally, hibernate (S4) state. This function is similar to the SetSystemPowerState function.Requirements 
      Windows NT/2000/XP: Included in Windows 2000 and later.
      Windows 95/98/Me: Included in Windows 98 and later.
      Header: Declared in Powrprof.h.
      Library: Use Powrprof.lib.See Also
    Power Management Overview, Power Management Functions, PBT_APMQUERYSUSPEND, PBT_APMSUSPEND 
      

  2.   

    ExitWindowsEx
    The ExitWindowsEx function either logs off the current user, shuts down the system, or shuts down and restarts the system. It sends the WM_QUERYENDSESSION message to all applications to determine if they can be terminated. BOOL ExitWindowsEx(
      UINT uFlags,     // shutdown operation
      DWORD dwReason   // shutdown reason
    );
    Parameters
    uFlags 
    [in] Specifies the type of shutdown. This parameter must include one of the following values. Value Meaning 
    EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off. 
    EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature. 
    Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section. 
     
    EWX_REBOOT Shuts down the system and then restarts the system. 
    Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section. 
     
    EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. If the system supports the power-off feature, the power is also turned off. 
    Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section. 
     
    This parameter can optionally include the following values. Value Meaning 
    EWX_FORCE Forces processes to terminate. When this flag is set, the system does not send the WM_QUERYENDSESSION and WM_ENDSESSION messages. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency. 
    EWX_FORCEIFHUNG Windows 2000/XP: Forces processes to terminate if they do not respond to the WM_QUERYENDSESSION or WM_ENDSESSION message. This flag is ignored if EWX_FORCE is used. dwReason 
    Windows XP: [in] Specifies the reason for initiating the shutdown. For more information, see System Shutdown Reason Codes. 
    Windows 2000 and earlier, Windows 95/98/Me: This parameter is ignored. Return Values
    If the function succeeds, the return value is nonzero.If the function fails, the return value is zero. To get extended error information, call GetLastError. Res
    The ExitWindowsEx function returns as soon as it has initiated the shutdown. The shutdown or logoff then proceeds asynchronously. To set a shutdown priority for an application relative to other applications in the system, use the SetProcessShutdownParameters function. During a shutdown or log-off operation, applications that are shut down are allowed a specific amount of time to respond to the shutdown request. If the time expires, the system displays a dialog box that allows the user to forcibly shut down the application, to retry the shutdown, or to cancel the shutdown request. If the EWX_FORCE value is specified, the system always forces applications to close and does not display the dialog box. Windows 2000/XP: If the EWX_FORCEIFHUNG value is specified, the system forces hung applications to close and does not display the dialog box. Windows 95/98/Me: Because of the design of the shell, calling ExitWindowsEx with EWX_FORCE fails to completely log off the user (the system terminates the applications and displays the Enter Windows Password dialog box, however, the user's desktop remains.) To log off the user forcibly, terminate the Explorer process before calling ExitWindowsEx with EWX_LOGOFF and EWX_FORCE. Console processes receive a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT, as the situation warrants. A console process routes these messages to its HandlerRoutine function. ExitWindowsEx sends these notification messages asynchronously; thus, an application cannot assume that the console notification messages have been handled when a call to ExitWindowsEx returns. Windows NT/2000/XP: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges. Windows 95/98/Me: ExitWindowEx does not work from a console application. 
      

  3.   

    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"); 
      

  4.   

    我下载更新了SDK,设置了include 和 lib 目录
    在程序里加上了
    #include <WinNT.h>
    #include <Powrprof.h>然后调用
    SetSuspendState(true,true,true);编译时提示错误如下
    --------------------Configuration: test - Win32 Debug--------------------
    Compiling...
    test.cpp
    Linking...
    test.obj : error LNK2001: unresolved external symbol "unsigned char __stdcall SetSuspendState(unsigned char,unsigned char,unsigned char)" (?SetSuspendState@@YGEEEE@Z)
    Debug/test.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    test.exe - 2 error(s), 0 warning(s)我真不是懂了。为什么 SetSuspendState(true,true,true);
    这语不能运行?再次请教!
      

  5.   

    GZ!
    在link里加入了Powrprof.lib也不行
      

  6.   

    是的。link加了Powrprof.lib也行不通:(
    我弄不懂出错提示的信息是什么意思.函数的参数应该完全匹配的呀..