Atlanta Custom Software Development 

 
   Search        Code/Page
 

User Login
Email

Password

 

Forgot the Password?
Services
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
Programming
  Database
Automation
OS/Networking
Graphics
Links
Tools
» Regular Expr Tester
» Free Tools

GetProcessModules - The list of DLLs and OCXes a process uses
[ All Languages » VB »  Windows]

Total Hit ( 3692)

Rate this article:     Poor     Excellent 

 Submit Your Question/Comment about this article

Rating


 


Click here to copy the following block
Const MAX_MODULE_NAmeInfo = 255
Const MAX_PATH = 260
Const TH32CS_SNAPMODULE = &H8

Private Type MODULEENTRY32
  dwSize As Long
  th32ModuleID As Long
  th32ProcessID As Long
  GlblcntUsage As Long
  ProccntUsage As Long
  modBaseAddr As Long
  modBaseSize As Long
  hModule As Long
  szModule As String * 256
  szExePath As String * MAX_PATH
End Type

Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal _
  dest As Any, ByVal source As Any, ByVal bytes As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias _
  "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) _
  As Long
Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, _
  lpmeInfo As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, _
  lpmeInfo As MODULEENTRY32) As Long
Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long

' Return the list of DLLs and OCXes that a process uses
' if argument if omitted, the current process is used
'
' names are stored starting at element 1 in the result array
' thus UBound(result) gives the number of modules
' in general, the first element is the name of the EXE file.

' NOTES: works only on Win 9x and 2000 (not on NT)

Function GetProcessModules(Optional ByVal processID As Long = -1) As String()
  Dim meInfo As MODULEENTRY32
  Dim success As Long
  Dim hSnapshot As Long
  ReDim res(0) As String
  Dim count As Long
  
  ' provide a default argument, if missing
  If processID = -1 Then processID = GetCurrentProcessId
  
  ' get information about the given process
  hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPMODULE, processID)
  ' exit now if process ID is invalid
  If hSnapshot = 0 Then GoTo ExitProc
  
  ' prepare the structure for receiving info
  meInfo.dwSize = Len(meInfo)
  
  ' get info on the first module
  success = Module32First(hSnapshot, meInfo)
  Do While success
    ' consider only modules belonging to the specified process
    If meInfo.th32ProcessID = processID Then
      count = count + 1
      ' make room in the array, if needed
      If count > UBound(res) Then
        ReDim Preserve res(count + 100) As String
      End If
      ' store the result
      res(count) = Left$(meInfo.szExePath, InStr(meInfo.szExePath & _
        vbNullChar, vbNullChar) - 1)
    End If
    ' continue the search
    success = Module32Next(hSnapshot, meInfo)
  Loop
  
  ' close the snapshot
  CloseHandle hSnapshot
  
ExitProc:
  ' trim out elements in excess
  ReDim Preserve res(0 To count) As String
  
  GetProcessModules = res
End Function


Submitted By : Nayan Patel  (Member Since : 5/26/2004 12:23:06 PM)

Job Description : He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting.
View all (893) submissions by this author  (Birth Date : 7/14/1981 )


Home   |  Comment   |  Contact Us   |  Privacy Policy   |  Terms & Conditions   |  BlogsZappySys

© 2008 BinaryWorld LLC. All rights reserved.