|
特定アプリケーションの複数回起動を防ぐため、アプリケーションが起動しているかチェックし、アプリケーションが起動していない時のみアプリケーションを起動するマクロを作成したいのですが、アプリケーション名(クラス名)が、起動のたび変わるため、下記ロジックで対応できません。どうしたらよいか教えてください。
【ロジック内容】
'定義宣言
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Const strClassName As String = "SciCalc@@@@"
Public Const strEXEName As String = "C:\Program Files\xxxxx.exe"
Sub S_calc()
Dim rc As Long
Dim lngProcessId As Long 'Shell関数の戻り値
rc = FindWindow(strClassName, vbNullString)
'ウィンドウハンドルが取得できた場合は起動しない
If rc <> 0& Then
MsgBox "xxxxはすでに起動しています!!"
Exit Sub
End If
lngProcessId = Shell(strEXEName, vbNormalFocus)
End Sub
@@@@の部分が起動のたびに変更します。起動のたびに変わるため、起動チェック「rc = FindWindow(strClassName, vbNullString)」のステップが思ったような動きをしてくれません。ワイルドカード(*)を使ってみたのですが、うまくいきませんでした。何とかこのようなアプリケーションの起動チェックを行う方法はないでしょうか??ご教授よろしくお願いします。
|
|