+ Reply to Thread
Results 1 to 3 of 3

Get list of running applications

  1. #1
    Fred
    Guest

    Get list of running applications

    Hi,
    I want to be able to get a list of current applications running the PC. The
    list should be the same list that appears in the application list of the
    Task Manager

    Thanks for any assistance,
    Fred



  2. #2
    Paul B
    Guest

    Re: Get list of running applications

    Fred, here is some code, don't remember where I got it from

    'Will list, starting in A1, all running programs on your computer
    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


    Sub List_Running_Programs()
    Dim r As Long, HoldPrcs() As String

    ReDim HoldPrcs(0) As String

    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)
    r = r + 1
    ReDim Preserve HoldPrcs(r) As String
    HoldPrcs(r) = 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)
    r = r + 1
    ReDim Preserve HoldPrcs(r) As String
    HoldPrcs(r) = Left(ModuleName, lRet)
    End If
    End If
    'Close the handle to the process
    lRet = CloseHandle(hProcess)
    Next

    End Select

    'here is where you can manipulate your array
    For r = 1 To UBound(HoldPrcs)
    Sheets(1).Cells(r, 1).Value = HoldPrcs(r)
    Next

    End Sub


    --
    Paul B
    Always backup your data before trying something new
    Please post any response to the newsgroups so others can benefit from it
    Feedback on answers is always appreciated!
    Using Excel 2002 & 2003

    "Fred" <leavemealone@home> wrote in message
    news:[email protected]...
    > Hi,
    > I want to be able to get a list of current applications running the PC.

    The
    > list should be the same list that appears in the application list of the
    > Task Manager
    >
    > Thanks for any assistance,
    > Fred
    >
    >




  3. #3
    Fred
    Guest

    Re: Get list of running applications

    This is very useful so thanks Paul but it lists all of the processes rather
    than the applications. Any idea how to get the list of applications.

    Fred

    "Paul B" <[email protected]> wrote in message
    news:[email protected]...
    > Fred, here is some code, don't remember where I got it from
    >
    > 'Will list, starting in A1, all running programs on your computer
    > 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
    >
    >
    > Sub List_Running_Programs()
    > Dim r As Long, HoldPrcs() As String
    >
    > ReDim HoldPrcs(0) As String
    >
    > 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)
    > r = r + 1
    > ReDim Preserve HoldPrcs(r) As String
    > HoldPrcs(r) = 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)
    > r = r + 1
    > ReDim Preserve HoldPrcs(r) As String
    > HoldPrcs(r) = Left(ModuleName, lRet)
    > End If
    > End If
    > 'Close the handle to the process
    > lRet = CloseHandle(hProcess)
    > Next
    >
    > End Select
    >
    > 'here is where you can manipulate your array
    > For r = 1 To UBound(HoldPrcs)
    > Sheets(1).Cells(r, 1).Value = HoldPrcs(r)
    > Next
    >
    > End Sub
    >
    >
    > --
    > Paul B
    > Always backup your data before trying something new
    > Please post any response to the newsgroups so others can benefit from it
    > Feedback on answers is always appreciated!
    > Using Excel 2002 & 2003
    >
    > "Fred" <leavemealone@home> wrote in message
    > news:[email protected]...
    >> Hi,
    >> I want to be able to get a list of current applications running the PC.

    > The
    >> list should be the same list that appears in the application list of the
    >> Task Manager
    >>
    >> Thanks for any assistance,
    >> Fred
    >>
    >>

    >
    >




+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1