📄 module1.bas
字号:
Attribute VB_Name = "Module1"
Option Base 1
Option Explicit
Type x
name As String * 20
name1 As String
password As String
time As Integer
timelimit As Integer
End Type
Type sysinfo
usernum As Integer
End Type
Public b(6) As yyy
Type yyy
name1 As String
time As Single
day As Integer
End Type
Public a(6) As x, yes As Boolean, cur As Integer, abc As Integer, xyz As Integer
Public xy As Integer, z As Integer
'Public Declare Function ExitWindowsEx Lib "user32" (ByVal uflags As Long, ByVal dwreserved As Long) As Long
Public loopfinish
Public day1 As Integer, hour1 As Integer, down As Integer, shutnow As Integer
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
'获取当前进程的一个伪句柄
Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As _
Long
Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
' 退出windows,并用特定的选项重新启动
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
'在一个OSVERSIONINFO结构中载入与平台和操作系统有关的版本信息
Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As _
String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal okenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As _
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As _
TOKEN_PRIVILEGES, ReturnLength As Long) As Long
'这两个api函数是winnt系统专用
Public Const EWX_LOGOFF = 0 '定义常数
Public Const EWX_SHUTDOWN = 1
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
Public Const ANYSIZE_ARRAY = 1
Public Const VER_PLATFORM_WIN32_NT = 2
'定义类型
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Type LUID
LowPart As Long
HighPart As Long
End Type
Public Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Public Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
Dim ret As Long
Dim flags As Long
'判断此系统是否为nt系统的函数
Public Function NT() As Boolean
Dim myOS As OSVERSIONINFO
myOS.dwOSVersionInfoSize = Len(myOS)
GetVersionEx myOS
NT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
'取得nt下的关机token的权限
Public Sub EnableShutDown()
Dim lProc As Long
Dim lToken As Long
Dim lLUID As LUID
Dim tPriv As TOKEN_PRIVILEGES
Dim tNewPriv As TOKEN_PRIVILEGES
Dim buffer As Long
lProc = GetCurrentProcess()
OpenProcessToken lProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, lToken
LookupPrivilegeValue "", "SeShutdownPrivilege", lLUID
tPriv.PrivilegeCount = 1
tPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
tPriv.Privileges(0).pLuid = lLUID
AdjustTokenPrivileges lToken, False, tPriv, Len(tNewPriv), tNewPriv, buffer
End Sub
'首先调用判断os的函数,如为nt则调用nt下的关机函数,而9x系统中可直接调用ExitWindowsEx函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -