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 & "
ootcimv2").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
Modified from : 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 so:
ListWins "*.doc*"
This will list all Word windows with a title containing .doc
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…