一个form一个button一个ListOption ExplicitPrivate Declare Function LdrEnumerateLoadedModules Lib "ntdll.dll" (ByVal Flags As Long, ByVal CallbackFunction As Long, ByVal Context As Long) As LongPrivate Sub Command1_Click()
LdrEnumerateLoadedModules 0, AddressOf CallbackFunction, 0
End Sub一个模块Option ExplicitPrivate Type LIST_ENTRY
Flink As Long
Blink As Long
End TypePrivate Type UNICODE_STRING
Length As Integer
MaxLength As Integer
Buffer As Long
End TypePrivate Type LDR_DATA_TABLE_ENTRY
InLoadOrderLinks As LIST_ENTRY
InMemoryOrderLinks As LIST_ENTRY
InInitializationOrderLinks As LIST_ENTRY
DllBase As Long
EntryPoint As Long
SizeOfImage As Long
FullDllName As UNICODE_STRING
BaseDllName As UNICODE_STRING
Flags As Long
LoadCount As Integer
TlsIndex As Integer
'...省略
End TypePrivate Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Public Sub CallbackFunction( _
DataTableEntry As LDR_DATA_TABLE_ENTRY, _
ByVal Context As Long, _
StopEnumeration As Long _
)
Dim strModuleName As String
strModuleName = String(lstrlenW(DataTableEntry.FullDllName.Buffer) * 2, 0)
CopyMemory ByVal strModuleName, ByVal DataTableEntry.FullDllName.Buffer, DataTableEntry.FullDllName.Length
Form1.List1.AddItem StrConv(strModuleName, vbFromUnicode)
End Sub
LdrEnumerateLoadedModules 0, AddressOf CallbackFunction, 0
End Sub一个模块Option ExplicitPrivate Type LIST_ENTRY
Flink As Long
Blink As Long
End TypePrivate Type UNICODE_STRING
Length As Integer
MaxLength As Integer
Buffer As Long
End TypePrivate Type LDR_DATA_TABLE_ENTRY
InLoadOrderLinks As LIST_ENTRY
InMemoryOrderLinks As LIST_ENTRY
InInitializationOrderLinks As LIST_ENTRY
DllBase As Long
EntryPoint As Long
SizeOfImage As Long
FullDllName As UNICODE_STRING
BaseDllName As UNICODE_STRING
Flags As Long
LoadCount As Integer
TlsIndex As Integer
'...省略
End TypePrivate Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Public Sub CallbackFunction( _
DataTableEntry As LDR_DATA_TABLE_ENTRY, _
ByVal Context As Long, _
StopEnumeration As Long _
)
Dim strModuleName As String
strModuleName = String(lstrlenW(DataTableEntry.FullDllName.Buffer) * 2, 0)
CopyMemory ByVal strModuleName, ByVal DataTableEntry.FullDllName.Buffer, DataTableEntry.FullDllName.Length
Form1.List1.AddItem StrConv(strModuleName, vbFromUnicode)
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货