How about a list of running processes using VBA
Function getProcessInfo() ''On Error Resume Next Dim objProcess, process, strNameOfUser ComputerName = "." Set objProcess = GetObject("winmgmts:{impersonationLevel=impersonate}\\" _ & ComputerName & "\root\cimv2").ExecQuery("Select * From Win32_Process") For Each process In objProcess If process.Name <> "System Idle Process" And process.Name <> "System" Then ''Debug.Print process.Name Debug.Print process.Name & "," & process.executablepath _ & "," & process.Priority & "," & process.sessionid _ & "," & strNameOfUser & "," & process.handlecount _ & "," & process.ThreadCount End If Next Set objProcess = Nothing End Function
Changed: http://www.windowsadminscripts.com/coding/networking/processes/
Perhaps a list of open windows might be more useful:
Private Const GW_HWNDNEXT = 2 Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Sub ListWins(Optional Title = "*", Optional Class = "*") Dim hWndThis As Long hWndThis = FindWindow(vbNullString, vbNullString) While hWndThis Dim sTitle As String, sClass As String sTitle = Space$(255) sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle))) sClass = Space$(255) sClass = Left$(sClass, GetClassName(hWndThis, sClass, Len(sClass))) If sTitle Like Title And sClass Like Class Then Debug.Print sTitle, sClass End If hWndThis = GetWindow(hWndThis, GW_HWNDNEXT) Wend End Sub
Use it like this:
ListWins "*.doc*"
This will display all Word windows with a title containing .doc
source share