vb关闭计算机的模块
2012-06-27 12:58
260 查看
'关闭计算机的模块 Option Explicit Public Declare Function SetSuspendState Lib "Powrprof" (ByVal Hibernate As Boolean, ByVal ForceCritical As Boolean, ByVal DisableWakeEvent As Boolean) As Boolean Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 'ExitWindowsEx的参数uflags,有四个对应值,分别是: Public Const EWX_LOGOFF = 0 '退出(注销) Public Const EWX_SHUTDOWN = 1 '关机 Public Const EWX_POWEROFF = 8 Public Const EWX_REBOOT = 2 '重启动 Public Const EWX_FORCE = 4 '强制关机 Public Const TOKEN_ADJUST_PRIVILEGES = &H20 Public Const TOKEN_QUERY = &H8 Public Const SE_PRIVILEGE_ENABLED = &H2 Const ANYSIZE_ARRAY = 1 Type LUID lowpart As Long highpart As Long End Type Type LUID_AND_ATTRIBUTES pLuid As LUID Attributes As Long End Type Type TOKEN_PRIVILEGES PrivilegeCount As Long Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES End Type Declare 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 Long '这个函数就是用于NT关机中使用的 Sub 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 Public Sub SystemControl(Index As Integer) IsReset = True AdjustTokenPrivilegesForNT Select Case Index Case 0 ExitWindowsEx EWX_LOGOFF, 0 Case 1 ExitWindowsEx EWX_POWEROFF, 0 Case 2 ExitWindowsEx EWX_REBOOT, 0 Case 3 SetSuspendState False, True, False Case 3 SetSuspendState True, True, True End Select End Sub
相关文章推荐
- VB 关闭计算机 代码
- vb.net中使用wmi关闭远程计算机上的进程
- 关闭计算机模块
- 写了个禁止关闭计算机的模块(原创:唐细刚 2005-5-29)
- 写了个禁止关闭计算机的模块(原创:唐细刚 2005-5-29)
- vb.net中使用wmi关闭远程计算机上的进程
- VB.NET-VS2010 通过代码关闭计算机的方法
- 在vb中实现关闭计算机
- VB使用ADOX压缩修复ACCESS数据库文件的类模块
- vb.net 计算机
- shell脚本关闭计算机集群
- 计算机组成复习 数字电路模块 待续Ing
- 计算机提速方案(关闭不必要的XP进程)
- php实现用手机关闭计算机(电脑)的方法
- vb 取得计算机名及目录
- Win64机器上VS报错“fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突”
- 关机之前记得关闭计算机串口调试工具
- SVN 提交错误--执行上下文错误,远程计算机强制关闭一个现有连接
- Windows 64位 Visual Studio2017 “模块计算机类型“x64”与目标计算机类型“X86”冲突解决方案
- 正确关闭Linux计算机的命令和方法