Shutdown or restart Windows using ExitWindowsEx
http://www.vb-helper.com/howto_shutdown_exitwindowsex.htmlLocal and Remote Shutdown/Reboot/Logoff
http://www.vbcity.com/pubs/article.asp?alias=shutdownsShut down windows
http://216.26.168.92/vbsquare/api/tip179.html

解决方案 »

  1.   

    如何关闭计算机?
         *API函数声明 
         Declare Function ExitWindows Lib "User" (ByVal dwReturnCode As Long, ByVal wReserved As Integer) As Integer
         '执行 
         Dim DUMMY 
         DUMMY=ExitWindows(0,0)
      

  2.   

    重新启动计算机
         
         1、API函数ExitWindowsEx,可以用来实现重新启动计算机或者关闭Windows。
         把下面的这段代码拷贝到模块得声明部分: 
           Public Const EWX_LOGOFF = 0 
           Public Const EWX_SHUTDOWN = 1 
           Public Const EWX_REBOOT = 2 
           Public Const EWX_FORCE = 4
           Public Const EWX_POWEROFF = 8
           Declare Function ExitWindowsEx Lib "user32" Alias _
             "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved _
             As Long) As Long
         
         如果你想要重新启动计算机,只需要插入下面的代码就可以了: 
         Call ExitWindowsEx(EWX_REBOOT, 0)
         
         ◆说明:
         参数说明如下:
         EWX_FORCE   所有的进程都被强制终止。
         EWX_LOGOFF  所有的进程被强制终止,并且用户退出登录(logged off)。
         EWX_POWEROFF 计算机系统被关机,并且如果支持节电特性,则计算机被物理关机。
         EWX_REBOOT  计算机系统被关机并重新启动。
         EWX_SHUTDOWN 计算机被物理地安全地关机。
         可根据需要使用相应的参数,还可以把这几个常量加起来作为组合的功能呢。
         
         ◆可能的用途:
         在安装程序修改了系统文件后,需要重新启动Windows来完成安装时,这段代码就显得特别有用了。 还有就是给朋友一个胡闹的小东西(啊,我跑.....)
      

  3.   

    在Win2000下比较难用,你还要获得系统权限的
    你须要引用下面的API
    Public Const EWX_FORCE = 4Public Const TOKEN_ADJUST_PRIVILEGES = &H20
    Public Const TOKEN_QUERY = &H8
    Public Const SE_PRIVILEGE_ENABLED = &H2
    Public Const ANYSIZE_ARRAY = 1Type LUID
        lowpart As Long
        highpart As Long
    End TypeType LUID_AND_ATTRIBUTES
        pLuid As LUID
        Attributes As Long
    End TypeType TOKEN_PRIVILEGES
        PrivilegeCount As Long
        Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
    End TypeDeclare Function GetCurrentProcess Lib "kernel32" () As Long
    Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
    Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As LongSub AdjustTokenPrivilegesForNT()    Dim hdlProcessHandle As Long
        Dim hdlTokenHandle As Long
        Dim tmpLuid As LUID
        Dim tkp As TOKEN_PRIVILEGES
        Dim tkpNewButIgnored As TOKEN_PRIVILEGES
        Dim lBufferNeeded As Long
      
        hdlProcessHandle = GetCurrentProcess()
        OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _
                         TOKEN_QUERY), hdlTokenHandle    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
        tkp.PrivilegeCount = 1
        tkp.Privileges(0).pLuid = tmpLuid
        tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED    AdjustTokenPrivileges hdlTokenHandle, False, tkp, _
                              Len(tkpNewButIgnored), tkpNewButIgnored, _
                              lBufferNeeded
     End Sub
    关机时用下面的代码
       AdjustTokenPrivilegesForNT
        ExitWindowsEx uFlags, 0
      

  4.   

    你是一个vb的出学者 是不是被上面的那些大哥的代码吓到了!
    上面的是api函数
    我建议你不要用上面的代码
    我有一个非常好用的控件 它可以实现关机等很多功能
    用起来也非常方便 就象你用botton picture等vb自代的一样
    要的话给我发消息 点我的名就可以
      

  5.   

    http://www.csdn.net/expert/topic/1040/1040225.xml?temp=.583584
      

  6.   

    重新启动计算机
         
         1、API函数ExitWindowsEx,可以用来实现重新启动计算机或者关闭Windows。
         把下面的这段代码拷贝到模块得声明部分: 
           Public Const EWX_LOGOFF = 0 
           Public Const EWX_SHUTDOWN = 1 
           Public Const EWX_REBOOT = 2 
           Public Const EWX_FORCE = 4
           Public Const EWX_POWEROFF = 8
           Declare Function ExitWindowsEx Lib "user32" Alias _
             "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved _
             As Long) As Long
         
         如果你想要重新启动计算机,只需要插入下面的代码就可以了: 
         Call ExitWindowsEx(EWX_REBOOT, 0)
         
         ◆说明:
         参数说明如下:
         EWX_FORCE   所有的进程都被强制终止。
         EWX_LOGOFF  所有的进程被强制终止,并且用户退出登录(logged off)。
         EWX_POWEROFF 计算机系统被关机,并且如果支持节电特性,则计算机被物理关机。
         EWX_REBOOT  计算机系统被关机并重新启动。
         EWX_SHUTDOWN 计算机被物理地安全地关机。
         可根据需要使用相应的参数,还可以把这几个常量加起来作为组合的功能呢
      

  7.   

    thinkeasy(Nothing)你的代码可以实现完全关机吗?为什么我的机器(2000)每次都是关机后,还是停在“您可以安全的关闭计算机了”这个画面呢?
    还要我每次都手动关电源
    这个又怎么解决呢?