Showing current processes

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pablojoshua
    New Member
    • Jun 2007
    • 10

    Showing current processes

    Ok I have the current processes showing, but it shows the path of the process too. I just want the list to show the .exe or .dll name with the suffix.

    This is what I have so far (from microsoft)


    General Declorations
    Code:
    Option Explicit
    Form Load
    Code:
    Private Sub Form_Load()
          List1.Clear
          Select Case getVersion()
    
          Case 1 'Windows 95/98
    
             Dim f As Long, sname As String
             Dim hSnap As Long, proc As PROCESSENTRY32
             hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
             If hSnap = hNull Then Exit Sub
             proc.dwSize = Len(proc)
             ' Iterate through the processes
             f = Process32First(hSnap, proc)
             Do While f
               sname = StrZToStr(proc.szExeFile)
               List1.AddItem sname
               f = Process32Next(hSnap, proc)
             Loop
    
          Case 2 'Windows NT
    
             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 200) As Long
             Dim lRet As Long
             Dim ModuleName As String
             Dim nSize As Long
             Dim hProcess As Long
             Dim i As Long
             'Get the array containing the process id's for each process object
             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
                'Get a handle to the Process
                hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
                   Or PROCESS_VM_READ, 0, ProcessIDs(i))
                'Got a Process handle
                If hProcess <> 0 Then
                    'Get an array of the module handles for the specified
                    'process
                    lRet = EnumProcessModules(hProcess, Modules(1), 200, _
                                                 cbNeeded2)
                    'If the Module Array is retrieved, Get the ModuleFileName
                    If lRet <> 0 Then
                       ModuleName = Space(MAX_PATH)
                       nSize = 500
                       lRet = GetModuleFileNameExA(hProcess, Modules(1), _
                                       ModuleName, nSize)
                       List1.AddItem Left(ModuleName, lRet)
                    End If
                End If
              'Close the handle to the process
             lRet = CloseHandle(hProcess)
             Next
    
          End Select
    End Sub
    Module 1
    Code:
    Public Declare Function Process32First Lib "kernel32" ( _
             ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
    
          Public Declare Function Process32Next Lib "kernel32" ( _
             ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
    
          Public Declare Function CloseHandle Lib "Kernel32.dll" _
             (ByVal Handle As Long) As Long
    
          Public Declare Function OpenProcess Lib "Kernel32.dll" _
            (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _
                ByVal dwProcId As Long) As Long
    
          Public Declare Function EnumProcesses Lib "psapi.dll" _
             (ByRef lpidProcess As Long, ByVal cb As Long, _
                ByRef cbNeeded As Long) As Long
    
          Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _
             (ByVal hProcess As Long, ByVal hModule As Long, _
                ByVal ModuleName As String, ByVal nSize As Long) As Long
    
          Public Declare Function EnumProcessModules Lib "psapi.dll" _
             (ByVal hProcess As Long, ByRef lphModule As Long, _
                ByVal cb As Long, ByRef cbNeeded As Long) As Long
    
          Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _
             ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
    
          Public Declare Function GetVersionExA Lib "kernel32" _
             (lpVersionInformation As OSVERSIONINFO) As Integer
    
          Public Type PROCESSENTRY32
             dwSize As Long
             cntUsage As Long
             th32ProcessID As Long           ' This process
             th32DefaultHeapID As Long
             th32ModuleID As Long            ' Associated exe
             cntThreads As Long
             th32ParentProcessID As Long     ' This process's parent process
             pcPriClassBase As Long          ' Base priority of process threads
             dwFlags As Long
             szExeFile As String * 260       ' MAX_PATH
          End Type
    
          Public Type OSVERSIONINFO
             dwOSVersionInfoSize As Long
             dwMajorVersion As Long
             dwMinorVersion As Long
             dwBuildNumber As Long
             dwPlatformId As Long           '1 = Windows 95.
                                            '2 = Windows NT
    
             szCSDVersion As String * 128
          End Type
    
          Public Const PROCESS_QUERY_INFORMATION = 1024
          Public Const PROCESS_VM_READ = 16
          Public Const MAX_PATH = 260
          Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
          Public Const SYNCHRONIZE = &H100000
          'STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
          Public Const PROCESS_ALL_ACCESS = &H1F0FFF
          Public Const TH32CS_SNAPPROCESS = &H2&
          Public Const hNull = 0
    
          Function StrZToStr(s As String) As String
             StrZToStr = Left$(s, Len(s) - 1)
          End Function
    
          Public Function getVersion() As Long
             Dim osinfo As OSVERSIONINFO
             Dim retvalue As Integer
             osinfo.dwOSVersionInfoSize = 148
             osinfo.szCSDVersion = Space$(128)
             retvalue = GetVersionExA(osinfo)
             getVersion = osinfo.dwPlatformId
          End Function

    Thansk & Cheers
  • FPhoenix
    New Member
    • Jul 2007
    • 18

    #2
    if you are trying to only have process names an thier ids, then possibly compile that information onto 1 variable(per process, so i would use an array of somekind), and search that variable for .exe and/or .dll so that you can search backwards from that point to the nearest space and cut that string out then.

    possibly if you posted the output that your getting i might beable to help you alittle more specifically if you need it

    im not sure but there also might be an easier way, possibly even an event flag you missed somewhere. so i would look into that alittle more before preceeding with my method because my method requires alittle more work than just adding a flag :-) good luck

    Comment

    • pablojoshua
      New Member
      • Jun 2007
      • 10

      #3
      it didn't work tha great, way to buggy that way, atleast thats what happened to me...

      has anyone gotten this to work, if you did please post code


      Thanks & Cheers

      Comment

      Working...