わんすけに聞いてみる vbscript [VBS]可視状態の起動中アプリケーションタイトルを取得する

[VBS]可視状態の起動中アプリケーションタイトルを取得する

vbscriptでAppActivateとか使ってウィンドウのアクティブ化とか使ってると
ウィンドウタイトルの文字列が無性にほしくなったりします。

そんな時に使う起動中アプリケーションのタイトル取得スクリプトがこちら。

 

1.アプリケーションなんでも、可視状態ならコレ

※ Office Wordがインストールされている端末じゃないと動きません。

' 起動中の可視アプリケーションのウィンドウタイトル一覧を取得
Function GetWindowTitles()
  Dim wrd, obj, titles
  Set wrd = CreateObject("Word.Application")
  
  For Each obj In wrd.Tasks
    If obj.Visible = True And Len(obj.Name) > 1 Then
      titles = titles & obj.Name & vbNewLine
    End If
  Next
  
  wrd.Quit
  GetWindowTitles = titles
End Function

なぜか、WordのライブラリにTasks入ってるんですよねぇ。

 

2.とりあえず見えてなかろうが起動してるプロセス全部取得

趣旨とズレるけど、似たようなシチュエーションでよく欲しくなるのはコレ

Function GetProcessName()
  On Error Resume Next
  Titles = ""
  Set QfeSet = CreateObject("WbemScripting.SWbemLocator").ConnectServer.ExecQuery("Select * From Win32_Process")
  
  For Each p In QfeSet
    Titles = Titles & p.Name & vbNewLine
  Next
  On Error GoTo 0
  
  GetProcessName = Titles
End Function

 

おまけ

3.起動中IE取得ならコレ(URL or タイトルで取得)
'■ vbsで指定タイトル・URLの起動中IEのオブジェクトを取得
Function getObjIE(KeywordTitleOrUrl)
    Dim ie, Reg
    Set ie = Nothing
    Set Reg = CreateObject("VBScript.RegExp")
    Reg.Pattern = ".*" & KeywordTitleOrUrl & ".*"
    On Error Resume Next
    For Each obj In CreateObject("Shell.Application").Windows
       If TypeName(obj.Document) = "HTMLDocument" Then
            If Reg.Test(obj.LocationName) Or Reg.Test(obj.LocationURL) Then
                Set ie = obj
            End If
        End If
    Next
    On Error GoTo 0
    Set Reg = Nothing
    If ie Is Nothing Then
        MsgBox "指定のieが見つかりませんでした。"
    Else
        Set getObjIE = ie
    End If
End Function

 

当サイトでは、VBSめーかーというvbscriptのコードを記述済みコードを組み合わせてあらかた使える状態でダウンロードできるページを用意しています。

Qiita - RPAっぽいノンプログラミングツール(vbs生成)を作ってみた。

よかったら、参考にしてみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Related Post