アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAで
D:\test\test.exe
が起動中か調べたいのですが
どのようにすれば良いですか?

http://www.vbalab.net/vbaqa/data/access/log/tree …

このページの方法を使えば、
exe以外のファイルが使用中かは調べることができたのですが
exeファイルの場合にはうまくいきません。

良い方法があれば教えてください。

質問者からの補足コメント

  • ありがとうございます。
    うまくいきました。

    ちなみにこの方法だとプログラムを複数起動していても
    それぞれの開いているパス名を取得することができますが、
    それぞれのウインドウハンドルを取得することは可能でしょうか?
    ローカルウインドウで
    colProcessListの下層を見てみたのですが
    分かりませんでした。

    ここから取得するのは不可能でしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/12/01 20:35
  • ご回答ありがとうございました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/12/03 11:55

A 回答 (2件)

残念ながら・・・出来ません。


一応、プロパティの中に Handle ってのがあるのですが
取得できるのは ProcessID の値です。
以前、調べていて Handle を見つけた時は、
『やったー \(^o^)/』と思いましたが
ぬか喜びでした。。。orz

なお、当方の環境は、Windows7 Pro & Office2010 です。
この回答への補足あり
    • good
    • 0

Excel VBA だとして、こんな風では。


確認用にイミディエイトウィンドウに出力しています。
'excel.exe' のところを'test.exe' など適宜修正を。

Sub てすと()
Dim strComputer As String, i As Long
Dim objWMIService As Object, colProcessList As Object, objProcess As Object

strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'excel.exe'")

For Each objProcess In colProcessList
i = i + 1
Debug.Print i, objProcess.properties_("commandLine").Value
Next
End Sub
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています