あるアプリケーションの起動を確認し、起動していない場合は起動するようなアプリをVBかDOSバッチで作成しようと考えています。

作例をご提示いただいた方には高額の報酬を提示します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/06/05 21:42:30
  • 終了:2008/06/05 23:14:41

ベストアンサー

id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262008/06/05 22:30:30

ポイント200pt

VBは分からないのでC#のサンプルコードを作ってみました。参考になるかと思います。

using System.Diagnostics;

public class CheckAndRun
{
	public static void Main(string[] args)
	{
		if(Process.GetProcessesByName(args[0]).Length == 0) {
			Process.Start(args[0]);
		}
	}
}

Process クラスで起動中のプロセスを探すこともできるし、新しいプロセスの実行も Process クラスでできます。

引数を渡したい等の細かいことを省けば要点はこれだけかと思います。

一応超適当版のソースとコンパイル済みexeはこちらにおいておきました。

その他の回答(1件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912008/06/05 22:11:35

ポイント100pt

VBS の例ですが、下記のようでどうでしょうか。


ペイントがあがっているかどうかをチェックして、動作する例です。

メッセージ表示が不要でしたら、Else 文をコメントにしてください。

対象プログラムは program_name で指定してください。

Const program_name = "mspaint.exe"
If processCheck(program_name) = False Then
    CreateObject("WScript.Shell").Run program_name
Else
    WScript.Echo program_name & "はすでに起動しています。"
End If

'//------------------------------------------------
' プロセスが動いているかチェックする関数
'//------------------------------------------------
Function processCheck( pName )
'//------------------------------------------------
	processCheck = False

    Dim objPWMI
    On Error Resume Next
    Set objPWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2")
    Err.Clear
    On Error GoTo 0
    If Err.Number <> 0 Then Exit Function  '接続できなかったら、終了

    Dim colProc
    Set colProc = objPWMI.ExecQuery("Select * from Win32_Process WHERE Name='" & pName & "'")
	If colProc.Count > 0 Then processCheck = True
End Function

ベースにした以前の回答です。

http://q.hatena.ne.jp/1203153427


不明な点はコメントにて補足しますので、有効にお願いします。

id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262008/06/05 22:30:30ここでベストアンサー

ポイント200pt

VBは分からないのでC#のサンプルコードを作ってみました。参考になるかと思います。

using System.Diagnostics;

public class CheckAndRun
{
	public static void Main(string[] args)
	{
		if(Process.GetProcessesByName(args[0]).Length == 0) {
			Process.Start(args[0]);
		}
	}
}

Process クラスで起動中のプロセスを探すこともできるし、新しいプロセスの実行も Process クラスでできます。

引数を渡したい等の細かいことを省けば要点はこれだけかと思います。

一応超適当版のソースとコンパイル済みexeはこちらにおいておきました。

  • id:raijin

    ありがとうございます。
    お二人とも参考になりました。

    結果としてはy-kawazさんのコードを、フォーム無しのVBアプリにして作ってしまいました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません