zoukankan      html  css  js  c++  java
  • vb6 的关机代码

    Public Const SE_PRIVILEGE_ENABLED As Integer = &H2
    Public Const TOKEN_QUERY As Integer = &H8
    Public Const TOKEN_ADJUST_PRIVILEGES As Integer = &H20
    Public Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
    Public Const EWX_LOGOFF As Integer = &H0 '注销计算机
    Public Const EWX_SHUTDOWN As Integer = &H1 '关闭计算机
    Public Const EWX_REBOOT As Integer = &H2 '重新启动计算机
    Public Const EWX_FORCE As Integer = &H4 '关闭所有进程,注销计算机
    Public Const EWX_POWEROFF As Integer = &H8
    Public Const EWX_FORCEIFHUNG As Integer = &H10
    Public Const SPI_GETWORKAREA = &H30

    Private Type Luid
        dwLowPart As Long
        dwHighPart As Long
    End Type

    Private Type LUID_AND_ATTRIBUTES
        udtLUID As Luid
        dwAttributes As Long
    End Type

    Private Type TokPriv1Luid
        Count As Integer
        Luid As Luid
        Attr As Integer
    End Type

    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 TokPriv1Luid, _
    ByVal BufferLength As Long, _
    PreviousState As Any, _
    ReturnLength As Long) As Long

    Private Sub DoExitWin(ByVal flg As Integer)
        Dim xc As Boolean '判断语句
        Dim tp As TokPriv1Luid
        Dim hproc As Long
        hproc = GetCurrentProcess()
       
        '调用进程值
        Dim htok As Long
        htok = 0
       
        xc = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, htok)
        tp.Count = 1
        tp.Attr = SE_PRIVILEGE_ENABLED
       
        xc = LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, tp.Luid)
        xc = AdjustTokenPrivileges(htok, False, tp, ByVal 0&, ByVal 0&, ByVal 0&)
        xc = ExitWindowsEx(flg, 0)
    End Sub

    Public Sub Reboot()
        Dim flg As Integer
        flg = EWX_FORCE Or EWX_REBOOT
        DoExitWin flg '重新启动计算机
    End Sub

    Public Sub PowerOff()
        Dim flg As Integer
        flg = EWX_FORCE Or EWX_POWEROFF
        DoExitWin flg '关闭计算机
    End Sub

    Public Sub Logout()
        Dim flg As Boolean
        flg = EWX_FORCE Or EWX_LOGOFF
        DoExitWin flg '注销计算机
    End Sub

  • 相关阅读:
    SQL中distinct的用法
    JMeter压测“java.net.SocketException: Socket closed”解决方法
    Jmeter里http接口的执行顺序是顺序执行
    【Web安全】越权操作——横向越权与纵向越权
    【WPF】使用CefSharp嵌入HTML网页
    【Visual Studio】项目的引用显示黄色叹号
    未能加载文件或程序集”xxxx”或它的某一个依赖项,试图加载格式不正确的程序。
    IDEA无法启动debugger,报错Address localhost:1099 is already in use
    Windows系统32位、64位DLL文件的存放位置
    Charles做代理的Map Remote路径配置
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784609.html
Copyright © 2011-2022 走看看