http://www.csdn.net/Expert/topic/509/509745.shtm

解决方案 »

  1.   

    Win2k关机:http://www.csdn.net/Expert/topic/509/509745.shtm
      

  2.   

    我是想用算法来搞定,以前学C的时候做过,不过在VB里有点发蒙
      

  3.   

    算法在这儿!!!!
    If Text1.Text <> "" Then
       Text2.Text = ""
       a = Text1.Text
       l = Len(Text1.Text)
       If a <> 0 Then
       For i = 1 To l
         c = Mid(Text1.Text, i, 1)
         If c >= "0" And c <= "9" Then
             Do While a
               r = a Mod 16
               a = a \ 16
               Select Case r
                  Case 0: r = "0"
                  Case 1: r = "1"
                  Case 2: r = "2"
                  Case 3: r = "3"
                  Case 4: r = "4"
                  Case 5: r = "5"
                  Case 6: r = "6"
                  Case 7: r = "7"
                  Case 8: r = "8"
                  Case 9: r = "9"
                  Case 10: r = "a"
                  Case 11: r = "b"
                  Case 12: r = "c"
                  Case 13: r = "d"
                  Case 14: r = "e"
                  Case 15: r = "f"
          End Select
               Text2.Text = r + Text2.Text
             Loop
           
        Else: Text2.Text = "输入错误"
              Exit Sub
        End If
       Next
       Else: Text2.Text = a
       End If
    Else: Text2.Text = "您没有输入任何数字"
    End If
    摘自《Visual Basic案例教程》。。
      

  4.   

    在win2000/winnt下关机:至于十进制到十六进制的转换你随便找本编程入门的书都能找到在此就不赘述了.
    Public Const TOKEN_ADJUST_PRIVILEGES = &H20
    Public Const TOKEN_QUERY = &H8
    Public Const SE_PRIVILEGE_ENABLED = &H2
    Public Const ANYSIZE_ARRAY = 1Public Type LUID
      lowpart As Long
      highpart As Long
    End TypePublic Type LUID_AND_ATTRIBUTES
      pLuid As LUID
      Attributes As Long
    End TypePublic Type TOKEN_PRIVILEGES
      PrivilegeCount As Long
      Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
    End TypePublic Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Public Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Public 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
    Public Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    '安全关机需调用的API函数
    Global Const EWX_POWEROFF = 8
    Global Const EWX_SHUTDOWN = 1 '终止所有进程并关闭计算机
    Global Const EWX_FORCE = 4    '强迫进程终止
    Global Const EWX_LOGOFF = 3  '关掉在进程安全描述表中运行的所有进程,重起计算机
    Global Const EWX_REBOOT = 2  '终止所有运行的进程并关闭计算机
    Global Const EWX_LOGIN = 0  '以其它用户名重新登录系统
    Public Declare Function ExitWindowsEx Lib "user32" (ByVal fuOptions As Long, ByVal dwReserved As Long) As Integer '关闭系统函数Public Sub AdjustToken()
    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_ENABLEDAdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
    End SubPrivate Sub cmdShutDownMe_Click()  
      AdjustToken
      ExitWindowsEx EWX_FORCE Or EWX_SHUTDOWN Or EWX_POWEROFF, 0
    End Sub