📄 module1.bas
字号:
Attribute VB_Name = "Module1"
Option Explicit
Public Type SERVICE_STATUS
dwServiceType As Long
dwCurrentState As Long
dwControlsAccepted As Long
dwWin32ExitCode As Long
dwServiceSpecificExitCode As Long
dwCheckPoint As Long
dwWaitHint As Long
End Type
Public Type ENUM_SERVICE_STATUS
lpServiceName As Long
lpDisplayName As Long
ServiceStatus As SERVICE_STATUS
End Type
'自定义常量
Public Const SIZEOF_SERVICE_STATUS As Long = 36
'windows常量
Public Const LB_SETTABSTOPS As Long = &H192
Public Const ERROR_MORE_DATA = 234
Public Const SC_MANAGER_ENUMERATE_SERVICE = &H4
'服务状态
Public Const SERVICE_ACTIVE = &H1
Public Const SERVICE_INACTIVE = &H2
Public Const SERVICE_STATE_ALL = SERVICE_ACTIVE Or SERVICE_INACTIVE
'服务类型,对应于SERVICE_STATUS.dwServiceType
Public Const SERVICE_KERNEL_DRIVER As Long = &H1
Public Const SERVICE_FILE_SYSTEM_DRIVER As Long = &H2
Public Const SERVICE_ADAPTER As Long = &H4
Public Const SERVICE_RECOGNIZER_DRIVER As Long = &H8
Public Const SERVICE_WIN32_OWN_PROCESS As Long = &H10
Public Const SERVICE_WIN32_SHARE_PROCESS As Long = &H20
Public Const SERVICE_INTERACTIVE_PROCESS As Long = &H100
Public Const SERVICE_WIN32 As Long = SERVICE_WIN32_OWN_PROCESS Or _
SERVICE_WIN32_SHARE_PROCESS
Public Const SERVICE_DRIVER As Long = SERVICE_KERNEL_DRIVER Or _
SERVICE_FILE_SYSTEM_DRIVER Or _
SERVICE_RECOGNIZER_DRIVER
Public Const SERVICE_TYPE_ALL As Long = SERVICE_WIN32 Or _
SERVICE_ADAPTER Or _
SERVICE_DRIVER Or _
SERVICE_INTERACTIVE_PROCESS
'服务状态SERVICE_STATUS.dwCurrentState
Public Const SERVICE_STOPPED As Long = &H1
Public Const SERVICE_START_PENDING As Long = &H2
Public Const SERVICE_STOP_PENDING As Long = &H3
Public Const SERVICE_RUNNING As Long = &H4
Public Const SERVICE_CONTINUE_PENDING As Long = &H5
Public Const SERVICE_PAUSE_PENDING As Long = &H6
Public Const SERVICE_PAUSED As Long = &H7
'接受的控制,对应于SERVICE_STATUS.dwControlsAccepted
Public Const SERVICE_ACCEPT_STOP As Long = &H1
Public Const SERVICE_ACCEPT_PAUSE_CONTINUE As Long = &H2
Public Const SERVICE_ACCEPT_SHUTDOWN As Long = &H4
'调用Net API的Windows数据类型
Public Const MAX_PREFERRED_LENGTH As Long = -1
Public Const NERR_SUCCESS As Long = 0&
Public Const SV_TYPE_WORKSTATION As Long = &H1
Public Const SV_TYPE_SERVER As Long = &H2
Public Const SV_TYPE_SQLSERVER As Long = &H4
Public Const SV_TYPE_DOMAIN_CTRL As Long = &H8
Public Const SV_TYPE_DOMAIN_BAKCTRL As Long = &H10
Public Const SV_TYPE_TIME_SOURCE As Long = &H20
Public Const SV_TYPE_AFP As Long = &H40
Public Const SV_TYPE_NOVELL As Long = &H80
Public Const SV_TYPE_DOMAIN_MEMBER As Long = &H100
Public Const SV_TYPE_PRINTQ_SERVER As Long = &H200
Public Const SV_TYPE_DIALIN_SERVER As Long = &H400
Public Const SV_TYPE_XENIX_SERVER As Long = &H800
Public Const SV_TYPE_SERVER_UNIX As Long = SV_TYPE_XENIX_SERVER
Public Const SV_TYPE_NT As Long = &H1000
Public Const SV_TYPE_WFW As Long = &H2000
Public Const SV_TYPE_SERVER_MFPN As Long = &H4000
Public Const SV_TYPE_SERVER_NT As Long = &H8000
Public Const SV_TYPE_POTENTIAL_BROWSER As Long = &H10000
Public Const SV_TYPE_BACKUP_BROWSER As Long = &H20000
Public Const SV_TYPE_MASTER_BROWSER As Long = &H40000
Public Const SV_TYPE_DOMAIN_MASTER As Long = &H80000
Public Const SV_TYPE_SERVER_OSF As Long = &H100000
Public Const SV_TYPE_SERVER_VMS As Long = &H200000
Public Const SV_TYPE_WINDOWS As Long = &H400000
Public Const SV_TYPE_DFS As Long = &H800000
Public Const SV_TYPE_CLUSTER_NT As Long = &H1000000
Public Const SV_TYPE_TERMINALSERVER As Long = &H2000000
Public Const SV_TYPE_DCE As Long = &H10000000
Public Const SV_TYPE_ALTERNATE_XPORT As Long = &H20000000
Public Const SV_TYPE_LOCAL_LIST_ONLY As Long = &H40000000
Public Const SV_TYPE_DOMAIN_ENUM As Long = &H80000000
Public Const SV_TYPE_ALL As Long = &HFFFFFFFF
Public Const SV_PLATFORM_ID_OS2 As Long = 400
Public Const SV_PLATFORM_ID_NT As Long = 500
'应用于svX_version_major的掩码值,以获取主版本号
Public Const MAJOR_VERSION_MASK As Long = &HF
Public Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Public Declare Function OpenSCManager Lib "advapi32.dll" _
Alias "OpenSCManagerA" _
(ByVal lpMachineName As String, _
ByVal lpDatabaseName As String, _
ByVal dwDesiredAccess As Long) As Long
Public Declare Function EnumServicesStatus Lib "advapi32.dll" _
Alias "EnumServicesStatusA" _
(ByVal hSCManager As Long, _
ByVal dwServiceType As Long, _
ByVal dwServiceState As Long, _
lpServices As Any, _
ByVal cbBufSize As Long, _
pcbBytesNeeded As Long, _
lpServicesReturned As Long, _
lpResumeHandle As Long) As Long
Public Declare Function CloseServiceHandle Lib "advapi32.dll" _
(ByVal hSCObject As Long) As Long
Public Declare Function NetServerEnum Lib "Netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Public Declare Function NetApiBufferFree Lib "netapi32.dll" _
(ByVal Buffer As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Public Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Declare Function lstrcpyA Lib "kernel32" _
(ByVal RetVal As String, ByVal Ptr As Long) As Long
Public Declare Function lstrlenA Lib "kernel32" _
(ByVal Ptr As Any) As Long
Public Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Public Function GetStrFromPtrA(ByVal lpszA As Long) As String
GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0)
Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -