很好了--已经!我在写一个免费软件,进程管理+系统设置的偷懒型软件,一个部分很难搞,大家侃侃!我已经声明了PROCESS32和module32 的结构但是这个东东不知怎么没反应,也不报错! 还缺什么东东!!!大家指点一下!! Option Explicit Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, lProcessID As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) Private Declare Function Process32First Lib "kernel32" (ByVal hsnapshot As Long, uprocess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal hsnapshot As Long, uprocess As PROCESSENTRY32) As Long Private Declare Function Module32First Lib "kernel32" (ByVal hsnapshot As Long, lppe As MODULEENTRY32) As Long Private Declare Function Module32Next Lib "kernel32" (ByVal hsnapshot As Long, lppe As MODULEENTRY32) As Long Private Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Byte modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 1024 End TypePrivate Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * 260& End Type Private Const TH32CS_SNAPPROCESS As Long = 2& Private Const TH32CS_SNAPMODULE = &H8 Dim procresultPrivate Sub lvw_Click() ProcH.StatusBar1.Panels(2).Text = lvw.SelectedItem Modulelis End Sub Sub Modulelis() clvw.ListItems.Clear ''''清空列表,初始化 clvw.ColumnHeaders.Clear ''''清空表头,初始化 clvw.ColumnHeaders.Add , , "模块名称", 2000 '''添加到表头第一项,有顺序的 clvw.ColumnHeaders.Add , , "模块路径", 4000 clvw.ColumnHeaders.Add , , "占用内存", 1000 clvw.ColumnHeaders.Add , , "引用", 600 clvw.ColumnHeaders.Add , , "全局引用", 1000 clvw.ColumnHeaders.Add , , "模块ID", 1000 clvw.LabelEdit = lvwManual clvw.FullRowSelect = True clvw.HideSelection = False clvw.HideColumnHeaders = False clvw.View = lvwReport Dim uprocess As PROCESSENTRY32 Dim l As Long Dim mm As MODULEENTRY32 Dim lm As Long Dim modlvw As ListItem l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) If l > 0 Then uprocess.dwSize = Len(uprocess) If Process32First(l, uprocess) Then Do '获得进程的标识符 lm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, uprocess.th32ProcessID) If lm > 0 Then mm.dwSize = Len(mm) If Module32First(lm, mm) Then Do If uprocess.th32ProcessID = mm.th32ProcessID Then ' Set modlvw = clvw.ListItems.Add(, , Text:=Str$(mm.szExePath)) 'modlvw.SubItems(5) = mm.ProccntUsage 'modlvw.SubItems(4) = mm.szExePath ' modlvw.SubItems(3) = mm.hModule ' modlvw.SubItems(2) = mm.modBaseAddr ' modlvw.SubItems(1) = mm.modBaseSize End If Loop Until (Module32Next(lm, mm) < 1) End If CloseHandle (lm) End If Loop Until (Process32Next(l, uprocess) < 1) End If CloseHandle (l) End If End Sub
还缺什么东东!!!大家指点一下!!
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, lProcessID As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Declare Function GetWindowThreadProcessId& Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)
Private Declare Function Process32First Lib "kernel32" (ByVal hsnapshot As Long, uprocess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hsnapshot As Long, uprocess As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib "kernel32" (ByVal hsnapshot As Long, lppe As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32" (ByVal hsnapshot As Long, lppe As MODULEENTRY32) As Long
Private Type MODULEENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlblcntUsage As Long
ProccntUsage As Long
modBaseAddr As Byte
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
End TypePrivate Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260&
End Type
Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Const TH32CS_SNAPMODULE = &H8
Dim procresultPrivate Sub lvw_Click()
ProcH.StatusBar1.Panels(2).Text = lvw.SelectedItem
Modulelis
End Sub
Sub Modulelis()
clvw.ListItems.Clear ''''清空列表,初始化
clvw.ColumnHeaders.Clear ''''清空表头,初始化
clvw.ColumnHeaders.Add , , "模块名称", 2000 '''添加到表头第一项,有顺序的
clvw.ColumnHeaders.Add , , "模块路径", 4000
clvw.ColumnHeaders.Add , , "占用内存", 1000
clvw.ColumnHeaders.Add , , "引用", 600
clvw.ColumnHeaders.Add , , "全局引用", 1000
clvw.ColumnHeaders.Add , , "模块ID", 1000
clvw.LabelEdit = lvwManual
clvw.FullRowSelect = True
clvw.HideSelection = False
clvw.HideColumnHeaders = False
clvw.View = lvwReport
Dim uprocess As PROCESSENTRY32
Dim l As Long
Dim mm As MODULEENTRY32
Dim lm As Long
Dim modlvw As ListItem
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
If l > 0 Then
uprocess.dwSize = Len(uprocess)
If Process32First(l, uprocess) Then
Do
'获得进程的标识符
lm = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, uprocess.th32ProcessID)
If lm > 0 Then
mm.dwSize = Len(mm)
If Module32First(lm, mm) Then
Do
If uprocess.th32ProcessID = mm.th32ProcessID Then
' Set modlvw = clvw.ListItems.Add(, , Text:=Str$(mm.szExePath))
'modlvw.SubItems(5) = mm.ProccntUsage
'modlvw.SubItems(4) = mm.szExePath
' modlvw.SubItems(3) = mm.hModule
' modlvw.SubItems(2) = mm.modBaseAddr
' modlvw.SubItems(1) = mm.modBaseSize
End If
Loop Until (Module32Next(lm, mm) < 1)
End If
CloseHandle (lm)
End If
Loop Until (Process32Next(l, uprocess) < 1)
End If
CloseHandle (l)
End If
End Sub