我在网上找到了一个代码:
Public Sub showProcesses()
Dim W As Object
Dim ProcessQuery As String
Dim processes As Object
Dim process As Object
Set W = GetObject("winmgmts:")
ProcessQuery = "SELECT * FROM win32_process"
Set processes = W.execquery(ProcessQuery)
For Each process In processes
MsgBox process.Name
MsgBox process.Description
Next
Set W = Nothing
Set processes = Nothing
Set process = Nothing
End Sub
它打印出所有活动进程的名称和描述。
示例:
TeraPad.exe
acad.exe
WINWORD.EXE
EXCEL.EXE
...
使用下面的代码,我获得了任务栏中可用的应用程序的窗口名称:
Private Sub AppActivates(WindowName As String)
Dim WD, task, n As Long
Set WD = CreateObject("Word.Application")
For Each task In WD.Tasks
MsgBox task.Name
Next
WD.Quit
Set WD = Nothing
End Sub
示例:
Basic_vba.pdf - Adobe Acrobat Reader DC
AutoCAD Mechanical 2016 - [sample_model.dwg]
20170424.txt - TeraPad
...
应用程序acad.exe [AutoCAD]位于任务栏中(状态为Minimum),我想在VBA中打开(调用)它的窗口。
这可能吗?
任何有关这些的提示都会有很大的帮助。
答案 0 :(得分:0)
您可以使用AppActivate
方法和窗口标题(恰好是任务的名称)。
VBA.AppActivate("Basic_vba.pdf - Adobe Acrobat Reader DC")
如果窗口最小化,那么您需要向窗口发送消息以恢复或最大化窗口。