有没有办法从 Excel 或 Word 进程等中找到当前打开的文件?我想获取 Windows 中所有正在运行的进程的列表以及它们当前打开的文件。
问问题
10041 次
2 回答
3
如何使用 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
修改自: http: //www.windowsadminscripts.com/coding/networking/processes/
也许打开的窗口列表可能更有用:
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
像这样使用它:
ListWins "*.doc*"
这将列出所有标题包含.doc的 Word 窗口
于 2012-04-19T11:54:56.733 回答
1
有什么原因,为什么你使用vb6?
编辑:我不知道,如果这对你有帮助,但这里有一个链接,其中有一些示例如何在 VB6 中获取进程列表:http ://wiki.robotz.com/index.php/Process_List_and_Locate_VB6
于 2012-04-19T11:08:33.077 回答