【系统】关闭计算机

  勇芳 2017-4-5 7371

        Case 0  '关闭计算机

                If IsFalse ExitWindowsEx(%EWX_FORCE Or %EWX_SHUTDOWN, 0) Then

                    MsgBox "关机失败。"

                End If   

        Case 1  ' 重新启动计算机

                If IsFalse ExitWindowsEx(%EWX_FORCE Or %EWX_REBOOT, 0) Then

                    MsgBox "重新启动计算机失败。"

                End If   

        Case 2 ' 注销计算机

 Function PowerOff(A As Long ) As Long 
    Local tOsVersion As OSVERSIONINFO
    Local B As  Long
    Local hToken       As Dword
    Local tokenProcess As TOKEN_PRIVILEGES

    tOsVersion.dwOSVersionInfoSize = SizeOf(tOsVersion)
    If GetVersionEx(tOsVersion) Then
        b = (tOsVersion.dwPlatformId = %VER_PLATFORM_WIN32_NT)
    End If

     If b Then
   

        ' 获取此进程的特权令牌。
        If IsFalse OpenProcessToken(GetCurrentProcess(), _
                   %TOKEN_ADJUST_PRIVILEGES Or %TOKEN_QUERY, hToken) Then
            Exit Function
        End If

        '获取值的关机特权。
        If LookupPrivilegeValue(ByVal %Null, "SeShutdownPrivilege", _
                   tokenProcess.Privileges(0).Luid) Then
    
            ' 启用关机特权为这一进程。
            tokenProcess.PrivilegeCount           = 1
            tokenProcess.Privileges(0).Attributes = %SE_PRIVILEGE_ENABLED
    
            b = AdjustTokenPrivileges(hToken, %FALSE, ByVal VarPtr(tokenProcess), 0, _
                       ByVal %Null, ByVal %Null)
        End If

         CloseHandle hToken
   
        If IsFalse b Then
'            MsgBox "无法获取关机特权。"
            Exit Function
        End If
    End If

    '如果您使用的 Windows XP 或晚些时候,你可能想要提供在第二个参数中的关机原因代码。请参阅代码的 Reason.inc 文件。主要原因代码应该或次要原因代码。
    Select Case a
        Case 0  '关闭计算机
                If IsFalse ExitWindowsEx(%EWX_FORCE Or %EWX_SHUTDOWN, 0) Then
'                    MsgBox "关机失败。"
                    Exit Function
                End If   
        Case 1  ' 重新启动计算机
                If IsFalse ExitWindowsEx(%EWX_FORCE Or %EWX_REBOOT, 0) Then
'                    MsgBox "重新启动计算机失败。"
                    Exit Function
                End If   
        Case 2 ' 注销计算机
                If IsFalse ExitWindowsEx(%EWX_FORCE Or %EWX_LOGOFF, 0) Then
'                    MsgBox "注销计算机失败。"
                    Exit Function
                End If   
    End Select
   Function=1
End Function


因国家互联网安全管理要求,关闭回帖功能。大家需要留言,请使用【勇芳软件客服】即时联系勇芳点此打开->>勇芳软件客服
返回
联系勇芳
发新帖 搜索 反馈 回顶部