请问一下,怎样在vb6.0中实现自动关闭计算机(操作系统是:windows2000)

解决方案 »

  1.   

    SHELL语句用法心得摘自:主题花园
    一、关于Rundll32.exe 
    过去,你曾经为了自己编的文件管理器能Format 磁盘、浏览器能自动拨号连接而求助于那位高傲的 API。现在,Rundll32.exe向你提供了更为平易近人的 方法来实现这些功能。 
    例如,要调用关机程序则为:shell “rundll32.exe user.exe,exitwindOws”。
    调用模块 命 令 结 果 
      rundll32.exe shell32.dll,Control_RunDLL 打开控制面板 
    SHELL32.DLL     
      rundll32.exe shell32,SHHelpShortcuts_Rundll PrintersFolder 打开打印机文件夹 
      rundll32.exe shell32,SHHelpShortcuts_Rundll FontsFolder 打开字体文件夹 
      rundll32.exe shell32,SHHelpShortcuts_Rundll AddPrinter 添加新打印机向导 
      rundll32.exe shell32,SHformatDrive 格式化软盘 
    SYSDM.CPL     
      rundll32.exe shell32,Control_RunDLL sysdm.cpl 系统属性,常规 
      rundll32.exe shell32,Control_RunDLL sysdm.cpl,,l 系统属性,设备管理器 
      rundll32.exe shell32,Control_RunDLL sysdm.cpl,,3 系统属性,性能 
      rundll32.exe shell32,Control_RunDLL sysdm.cpl @1 添加新硬件向导 
    APPWIZ.CPL     
      rundll32.exe shell32,Control_RunDLL appwiz.cpl,,1 添加/删除程序 
      rundll32.exe shell32,Control_RunDLL appwiz.cpl,,2 安装Windows部件 
      rundll32.exe shell32,Control_RunDLL appwiz.cpl,,3 制作启动盘 
    DISKCOPY.DLL     
      rundll32.exe diskcopy.dll,DiskcopyRundll 复制磁盘 
    RNAUI.DLL     
      rundll32.exe rnaui.dll,RnaDial x (x为连接名称) 打开拨号边接对话框,若已连接,则显示连接状态对话框 
      rundll32.exe rnaui.dll,RnaWizard 新建拨号连接向导 
    DESK.CPL     
      rundll32.exe shell32,Control_RunDLL desk.cpl,,0 选择桌面背景 
      rundll32.exe shell32,Control_RunDLL desk.cpl,,1 选择屏幕保护 
      rundll32.exe shell32,Control_RunDLL desk.cpl,,2 选择外观 
      rundll32.exe shell32,Control_RunDLL desk.cpl,,3 设置显示属性 
    MAIN.CPL     
      rundll32.exe shell32,Control_RunDLL main.cpl @0 设置鼠标属性 
      rundll32.exe shell32,Control_RunDLL main.cpl @1 设置键盘属性,速度 
      rundll32.exe shell32,Control_RunDLL main.cpl @1,,1 设置键盘属性,语言 
      rundll32.exe shell32,Control_RunDLL main.cpl @2 打开打印机文件夹 
      rundll32.exe shell32,Control_RunDLL main.cpl @3 打开字体属性 
      rundll32.exe shell32,Control_RunDLL main.cpl @4 设置输入法 
    MODEM.CPL     
      rundll32.exe shell32,Control_RunDLL modem.cpl,,add 添加调制解调器向导 
    MMSYS.CPL     
      rundll32.exe shell32,Control_RunDLL mmsys.cpl @1 设置声音属性(也可以加入,,0到,,4的参数以选择不同的标签) 
    UESR.EXE     
      rundll32.exe user.exe,exitwindows 关闭计算机
      

  2.   

    FAQ里的,动一下手就不用出分了,不过揭贴的时候别不舍得给分啊===================================================================
    声明:  
    Declare  Function  AdjustTokenPrivileges  Lib  "advapi32.dll"  Alias  "AdjustTokenPrivileges"  (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"  Alias  "OpenProcessToken"  (ByVal  ProcessHandle  As  Long,  ByVal  DesiredAccess  As  Long,  TokenHandle  As  Long)  As  Long  
     
    这是一个例子:  
    Option  Explicit    
     
    Private  Type  LUID  
    UsedPart  As  Long  
    IgnoredForNowHigh32BitPart  As  Long  
    End  Type    
     
    Private  Type  TOKEN_PRIVILEGES  
    PrivilegeCount  As  Long  
    TheLuid  As  LUID  
    Attributes  As  Long  
    End  Type    
     
    'Beginning  of  Code  
     
    Private  Const  EWX_SHUTDOWN  As  Long  =  1  
    Private  Const  EWX_FORCE  As  Long  =  4  
    Private  Const  EWX_REBOOT  =  2    
       
     
    Private  Declare  Function  ExitWindowsEx  Lib  "user32"  (  _  
    ByVal  dwOptions  As  Long,  ByVal  dwReserved  As  Long)  As  Long      
     
    Private  Declare  Function  GetCurrentProcess  Lib  "kernel32"  ()  As  Long  
     
    Private  Declare  Function  OpenProcessToken  Lib  "advapi32"  (  _  
    ByVal  ProcessHandle  As  Long,  ByVal  DesiredAccess  As  Long,  _  
    TokenHandle  As  Long)  As  Long  
     
    Private  Declare  Function  LookupPrivilegeValue  Lib  "advapi32"  _  
    Alias  "LookupPrivilegeValueA"  (ByVal  lpSystemName  As  String,  _  
    ByVal  lpName  As  String,  lpLuid  As  LUID)  As  Long  
     
    Private  Declare  Function  AdjustTokenPrivileges  Lib  "advapi32"  (  _  
    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  
     
     
    Private  Sub  AdjustToken()    
     
    Const  TOKEN_ADJUST_PRIVILEGES  =  &H20  
    Const  TOKEN_QUERY  =  &H8  
    Const  SE_PRIVILEGE_ENABLED  =  &H2  
     
    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    
     
    '  Get  the  LUID  for  shutdown  privilege.  
     
    LookupPrivilegeValue  "",  "SeShutdownPrivilege",  tmpLuid    
    tkp.PrivilegeCount  =  1  '  One  privilege  to  set  
    tkp.TheLuid  =  tmpLuid  
    tkp.Attributes  =  SE_PRIVILEGE_ENABLED    
    '  Enable  the  shutdown  privilege  in  the  access  token  of  this  
    '  process.  
    AdjustTokenPrivileges  hdlTokenHandle,  False,  tkp,  _  
    Len(tkpNewButIgnored),  tkpNewButIgnored,  lBufferNeeded    
    End  Sub    
     
    Private  Sub  cmdForceShutdown_Click()  
           AdjustToken  
           ExitWindowsEx  (EWX_SHUTDOWN  Or  EWX_FORCE  Or  EWX_REBOOT),  &HFFFF  
    End  Sub