PowerShellまたはVBScriptを使用して、Windowsタスクマネージャー内の[アプリケーション]タブに表示されているように、実行中のアプリケーションのリストをプログラムで取得する必要があります。
これまでに見つけたのは、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を使用すると、もちろん実行されているプロセスがいくつか表示されることに気付きましたが、[アプリケーション]タブには表示されません。 ExplorerやUltraMonなどのように。私が遭遇したプロセスにはウィンドウタイトルがなかったので、代わりにmainwindowtitleを条件付けすることができます。
gps | ? {$_.mainwindowtitle.length -ne 0} | select name, mainwindowtitle
あなたが探しているコマンドラインから:
tasklist /v
/v
は冗長を意味し、「各プロセスで実行されているアプリケーション」のリストが含まれます
tasklist /v /fi "imagenaem eq POWERPNT.EXE"
たとえば、POWERPNT.EXEプロセスで実行されているアプリケーションのみをフィルタリングするために使用できます。
スターラーの答えをPowerShellに変換:
$ Word = new-object -com'Word.application '
$ Word.tasks | ? {$ _。visible} |名前を選択
$ Word.quit()