4

私はこの質問が以前に尋ねられたことを知っており、以前にそれらの投稿で提供されたすべての解決策を試しましたが、うまくいかないようです:-

static void CallBatch(string path)
        {
            int ExitCode;
            Process myProcess;

            ProcessStartInfo ProcessInfo;
            ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + path);
            ProcessInfo.CreateNoWindow = true;
            ProcessInfo.UseShellExecute = true;

            myProcess = Process.Start(ProcessInfo);
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            myProcess.WaitForExit();

            myProcess.EnableRaisingEvents = true;
            myProcess.Exited += new EventHandler(process_Exited);

            ExitCode = myProcess.ExitCode;

            Console.WriteLine("ExitCode: " + ExitCode.ToString(), "ExecuteCommand");
            myProcess.Close();
        }

バッチ ファイルを呼び出そうとすると、createNoWindow と UseShellExecute が両方とも true に設定されていても、ウィンドウが表示されます。

バッチファイルをサイレントに実行するために何か他のものを配置する必要がありますか?

4

1 に答える 1

7

これを試して:

Process myProcess = new Process();
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.Arguments = "/c " + path;
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new EventHandler(process_Exited);
myProcess.Start();
myProcess.WaitForExit();
ExitCode = myProcess.ExitCode;

アイデアはmyProcess.StartInfo、プロセスを開始した後に操作しないことです。それは役に立ちません。また、 を呼び出して自分でシェルを起動するため、に設定UseShellExecuteする必要はありません。truecmd.exe

于 2012-09-19T01:49:50.310 に答える