11

CMD でコマンドを実行するプロセスを作成しました。

var process = Process.Start("CMD.exe", "/c apktool d app.apk");
process.WaitForExit();

実際の CMD ウィンドウを表示せずにこのコマンドを実行するにはどうすればよいですか?

4

4 に答える 4

11

WindowsStyle-Property を使用して、indicate whether the process is started in a window that is maximized, minimized, normal (neither maximized nor minimized), or not visible

process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

ソース: プロパティ: MSDN 列挙: MSDN

オブジェクトの初期化時にプロセスを開始したため、コードをこれに変更して、プロパティ (プロセスの開始後に設定された) が認識されないようにします。

Process proc = new Process();
proc.StartInfo.FileName = "CMD.exe";
proc.StartInfo.Arguments = "/c apktool d app.apk";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
于 2013-10-08T19:57:46.943 に答える
6

さまざまなコメントや回答で指摘されているように、プログラムにはいくつかの問題があります。ここでそれらすべてに対処しようとしました。

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "apktool";

//join the arguments with a space, this allows you to set "app.apk" to a variable
psi.Arguments = String.Join(" ", "d", "app.apk");

//leave it to the application, not the OS to launch the file
psi.UseShellExecute = false;

//choose to not create a window
psi.CreateNoWindow = true;

//set the window's style to 'hidden'
psi.WindowStyle = ProcessWindowStyle.Hidden;

var proc = new Process();
proc.StartInfo = psi;
proc.Start();
proc.WaitForExit();

主な問題:

  • cmd /c不要な場合の使用
  • 非表示のプロパティを設定せずにアプリを起動する
于 2013-10-08T20:18:28.897 に答える
2

これを試して :

     proc.StartInfo.CreateNoWindow = true;
     proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
     proc.WaitForExit(); 
于 2013-10-08T19:56:43.793 に答える