サードパーティのアプリケーションを起動するために使用する関数は次のとおりです。
public static void ProcessStart(string ExecutablePath, string sArgs, bool bWait)
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = ExecutablePath;
if(sArgs.Length > 0)
proc.StartInfo.Arguments = sArgs;
proc.Start();
if(bWait)
proc.WaitForExit();
if(ProcessLive(ExecutablePath))
return true;
else
return false;
}
ExecutablePath:実行可能ファイルへのフルパス
sArgs:コマンドライン引数
bWait:プロセスが終了するのを待ちます
私の場合、二次関数を使用して、プロセスがすでに実行されているかどうかを判断します。これは正確にはあなたが探しているものではありませんが、それでも機能します:
public static bool ProcessLive(string ExecutablePath)
{
try
{
string strTargetProcessName = System.IO.Path.GetFileNameWithoutExtension(ExecutablePath);
System.Diagnostics.Process[] Processes = System.Diagnostics.Process.GetProcessesByName(strTargetProcessName);
foreach(System.Diagnostics.Process p in Processes)
{
foreach(System.Diagnostics.ProcessModule m in p.Modules)
{
if(ExecutablePath.ToLower() == m.FileName.ToLower())
return true;
}
}
}
catch(Exception){}
return false;
}