6

リスト内のすべてのサーバーの時間を取得するユーティリティを開発しました。

System.Diagnostics.Process p;
string server_name = "";
string[] output;
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "net";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StandardOutput.ReadLine().ToString()

このコードの実行中。コマンドプロンプト画面が表示されます。ユーザーから隠したい。そのために何ができますか?

4

4 に答える 4

12

ウィンドウを使用しないか、最小化するようにプロセスに指示できます。

// don't execute on shell
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;

// don't show window
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

出力をUseShellExecute = falseリダイレクトできます:

// redirect standard output as well as errors
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;

これを行うときは、出力バッファーの非同期読み取りを使用して、バッファーのオーバーフィルによるデッドロックを回避する必要があります。

StringBuilder outputString = new StringBuilder();
StringBuilder errorString = new StringBuilder();

p.OutputDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    outputString.AppendLine("Info " + e.Data);
                }
            };

p.ErrorDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    errorString.AppendLine("EEEE " + e.Data);
                }
            };
于 2013-01-11T08:38:29.950 に答える
5

ProcessWindowStyleこのような列挙を試してください。

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;

非表示のウィンドウ スタイル。ウィンドウは、表示または非表示にすることができます。システムは非表示のウィンドウを描画せずに表示します。ウィンドウが非表示の場合、事実上無効になります。非表示ウィンドウは、システムまたは他のウィンドウからのメッセージを処理できますが、ユーザーからの入力を処理したり、出力を表示したりすることはできません。多くの場合、アプリケーションは、ウィンドウの外観をカスタマイズしている間、新しいウィンドウを隠したままにして、ウィンドウ スタイルを標準にします。ProcessWindowStyle.Hiddenを使用する には、ProcessStartInfo.UseShellExecute プロパティをfalseにする必要があります。

于 2013-01-11T08:38:42.763 に答える
1

この両方を試してみてください

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

またはこれもチェックしてください

ウィンドウなしで子プロセスを実行するには、

CreateNoWindow プロパティを使用し、UseShellExecute を設定します。

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false;
Process processChild = Process.Start(info); 

MSDN のこの投稿に目を通すことをお勧めします: How to start a console app in a new window, theparent's window, or no window

于 2013-01-11T08:38:20.293 に答える
1

システム参照を追加します。

using System.Diagnostics;

次に、このコードを使用して、コマンドを非表示の CMD ウィンドウで実行します。

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();
于 2014-10-10T16:15:41.050 に答える