Ответ 1
Это должно сделать трюк:
Set Word = CreateObject("Word.Application")
Set Tasks = Word.Tasks
For Each Task in Tasks
If Task.Visible Then Wscript.Echo Task.Name
Next
Word.Quit
Мне нужно программно получить список запущенных приложений, как показано на вкладке "Приложения" внутри диспетчера задач Windows, используя PowerShell или VBScript.
Все, что я могу найти до сих пор, - это список процессов с использованием VBScript и WMI.
Это должно сделать трюк:
Set Word = CreateObject("Word.Application")
Set Tasks = Word.Tasks
For Each Task in Tasks
If Task.Visible Then Wscript.Echo Task.Name
Next
Word.Quit
Это закроет вас в PowerShell:
get-process | where-object {$_.mainwindowhandle -ne 0} | select-object name, mainwindowtitle
Или более короткая версия:
gps | ? {$_.mainwindowhandle -ne 0} | select name, mainwindowtitle
@Steven Murawski: Я заметил, что если бы я использовал mainwindowhandle, я бы получил некоторый процесс, который работал, конечно, но не на вкладке "Приложения". Как исследователь и UltraMon и т.д. Вместо этого вы можете отключить mainwindowtitle, так как тот процесс, с которым я столкнулся, не имел оконных названий - вот так
gps | ? {$_.mainwindowtitle.length -ne 0} | select name, mainwindowtitle
из командной строки, которую вы ищете:
tasklist /v
/v
означает подробный и будет содержать список "приложение, запускающее каждый процесс
tasklist /v /fi "imagenaem eq POWERPNT.EXE"
например, может использоваться для фильтрации всего приложения, запущенного в процессе POWERPNT.EXE.
ответ stahler, преобразованный в PowerShell:
$word = new-object -com 'word.application'
$word.tasks |? {$ _. visible} | выберите имя
$word.quit()