请高人指点

解决方案 »

  1.   

    Option ExplicitPrivate Declare Function EnumProcesses Lib "psapi.dll" _
                              (ByRef lpidProcess As Long, ByVal cb As Long, _
                              ByRef cbNeeded As Long) As LongPrivate Declare Function EnumProcessModules Lib "psapi.dll" _
                              (ByVal hProcess As Long, ByRef lphModule As Long, _
                              ByVal cb As Long, ByRef cbNeeded As Long) As LongPrivate Declare Function GetModuleFileNameExA Lib "psapi.dll" _
                              (ByVal hProcess As Long, ByVal hModule As Long, _
                              ByVal ModuleName As String, ByVal nSize As Long) As LongPrivate Declare Function CloseHandle Lib "Kernel32.dll" _
                              (ByVal Handle As Long) As Long
    Private Declare Function OpenProcess Lib "Kernel32.dll" _
                              (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _
                              ByVal dwProcId As Long) As LongConst PROCESS_QUERY_INFORMATION = &H400
    Const PROCESS_VM_READ = &H10Private Sub Form_Load()
        Dim cb As Long
        Dim cbNeeded As Long
        Dim NumElements As Long
        Dim ProcessIDs() As Long
        Dim cbNeeded2 As Long
        Dim NumElements2 As Long
        Dim Modules(1 To 255) As Long
        Dim lRet As Long
        Dim ModuleName As String
        Dim nSize As Long
        Dim hProcess As Long
        Dim i As Long
        cb = 8
        cbNeeded = 96    Do While cb <= cbNeeded
            cb = cb * 2        ReDim ProcessIDs(cb / 4) As Long
            lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
        Loop
        NumElements = cbNeeded / 4    For i = 1 To NumElements        '取得一个进程的句柄
            hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
                       Or PROCESS_VM_READ, 0, ProcessIDs(i))        If hProcess <> 0 Then            lRet = EnumProcessModules(hProcess, Modules(1), 255, _
                       cbNeeded2)            If lRet <> 0 Then                ModuleName = Space(255)
                    nSize = 255
                    lRet = GetModuleFileNameExA(hProcess, Modules(1), _
                           ModuleName, 255)                '列出找到的进程和文件!                Debug.Print ModuleName            End If
            End If        '关闭句柄
            lRet = CloseHandle(hProcess)
        Next
    End Sub新年快乐