One API Call
VB Code:
  1. Const TH32CS_SNAPHEAPLIST = &H1
  2. Const TH32CS_SNAPPROCESS = &H2
  3. Const TH32CS_SNAPTHREAD = &H4
  4. Const TH32CS_SNAPMODULE = &H8
  5. Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
  6. Const TH32CS_INHERIT = &H80000000
  7. Const MAX_PATH As Integer = 260
  8. Private Type PROCESSENTRY32
  9.     dwSize As Long
  10.     cntUsage As Long
  11.     th32ProcessID As Long
  12.     th32DefaultHeapID As Long
  13.     th32ModuleID As Long
  14.     cntThreads As Long
  15.     th32ParentProcessID As Long
  16.     pcPriClassBase As Long
  17.     dwFlags As Long
  18.     szExeFile As String * MAX_PATH
  19. End Type
  20. Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  21. Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  22. Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  23. Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
  24. Private Sub Form_Load()
  25.     Dim hSnapShot As Long, uProcess As PROCESSENTRY32
  26.     'Takes a snapshot of the processes and the heaps, modules, and threads used by the processes
  27.     hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
  28.     'set the length of our ProcessEntry-type
  29.     uProcess.dwSize = Len(uProcess)
  30.     'Retrieve information about the first process encountered in our system snapshot
  31.     r = Process32First(hSnapShot, uProcess)
  32.     'set graphics mode to persistent
  33.     Me.AutoRedraw = True
  34.     Do While r
  35.         Me.Print Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0))
  36.         'Retrieve information about the next process recorded in our system snapshot
  37.         r = Process32Next(hSnapShot, uProcess)
  38.     Loop
  39.     'close our snapshot handle
  40.     CloseHandle hSnapShot
  41. End Sub