人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

あるアプリケーションの起動を確認し、起動していない場合は起動するようなアプリをVBかDOSバッチで作成しようと考えています。
作例をご提示いただいた方には高額の報酬を提示します。


●質問者: raijin
●カテゴリ:コンピュータ インターネット
✍キーワード:DoS VB アプリ アプリケーション バッチ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●100ポイント

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


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


2 ● y-kawaz
●200ポイント ベストアンサー

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はこちらにおいておきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ