特定の値のHWPCIをサンプリングするツールを実行しています(私はそれを作成しませんでした)。
コマンドプロンプトから実行すると、1つの終了コード(正しいコード)が返されますが、を使用して別のアプリケーションから実行すると、Process.Start
別の終了コードが返されます。
アプリケーションを直接実行するか、経由して実行するかには違いがありますProcess.Start
か?この問題の簡単な回避策を知っていますか?
特定の値のHWPCIをサンプリングするツールを実行しています(私はそれを作成しませんでした)。
コマンドプロンプトから実行すると、1つの終了コード(正しいコード)が返されますが、を使用して別のアプリケーションから実行すると、Process.Start
別の終了コードが返されます。
アプリケーションを直接実行するか、経由して実行するかには違いがありますProcess.Start
か?この問題の簡単な回避策を知っていますか?
から同じ結果が必要な場合Process.Start()
は、コマンド ラインと同じ作業ディレクトリでアプリケーションを実行する必要があります。
Hassan の回答 (私の同様の問題を解決した) で述べたように、Process.Start() から返される終了コードは、実行可能ファイルの場所、特にそれが配置されているディレクトリの影響を受けます。使用したコードは次のとおりです。
string yourExe = "C\\Program Files\\Your Directory\\YourExe.exe";
string currentDir = Directory.GetCurrentDirectory();
string yourExeDir = "C\\Program Files\\Your Directory";
try
{
Directory.SetCurrentDirectory(yourExeDir);
}
catch (DirectoryNotFoundExeption dnfe)
{
MessageBox.Show("The specified directory does not exist. " + dnfe.Message);
}
if (!File.Exists(yourExe))
{
MessageBox.Show("Can't find yourExe");
}
else
{
Process.Start(yourExe);
}
try
{
//Set the current directory.
Directory.SetCurrentDirectory(currentDir);
}
catch (DirectoryNotFoundException dnfe)
{
MessageBox.Show("The specified directory does not exist. " + dnfe.Message);
}
これにより、現在の作業ディレクトリが .exe があるディレクトリに切り替わり、それが実行されてから、以前の作業ディレクトリに戻ります。