プロセスを起動する方法を見つけます。しかし、私の問題はコンソールウィンドウ(この場合は7z)が最前面に表示され、視界を遮り、文章を中断したり、数秒ごとにフォーカスを外したりすることです。その非常に迷惑な、どのように私はそれが起こるのを防ぐのですか。 CreateNoWindowはそれを解決すると思ったが、それはしなかった。
注:コンソールでユーザー入力が必要な場合があります(ファイルを交換するかどうか)。したがって、完全に非表示にすることは問題になる場合があります。
これが私の現在のコードです。
void doSomething(...)
{
myProcess.StartInfo.FileName = ...;
myProcess.StartInfo.Arguments = ...;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
myProcess.WaitForExit();
}
私が正しく思い出せば、これは私のために働いた
Process process = new Process();
// Stop the process from opening a new window
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
// Setup executable and parameters
process.StartInfo.FileName = @"c:\test.exe"
process.StartInfo.Arguments = "--test";
// Go
process.Start();
私はこれをC#コンソールアプリケーション内から使用して別のプロセスを起動しましたが、アプリケーションが別のウィンドウで起動するのを停止し、代わりにすべてを同じウィンドウに保持しました。
@galetsあなたの提案では、ウィンドウは作成されたままで、最小化され始めます。これは、acidzombie24が望んだことを実際に実行するためによりよく機能します。
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
これを試して:
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
再確認する必要がありますが、UseShellExecute = false
。これにより、標準出力/エラーストリームをキャプチャすることもできます。