我用C#做了一个程序的界面,通过这个界面调用bat文件,调用语句Process p = System.Diagnostics.Process.Start("cmd.exe", "/c a.bat");现在调用已经没有问题了,我想问一下,怎么样能够把调用a.bat时执行的程序的过程隐藏起来,不在我的界面程序中显示cmd.exe那个运行界面,而直接反馈给我结果~不知道我说清楚了没有
调试欢乐多
Process compiler = new Process();
compiler.StartInfo.FileName = "csc.exe";
compiler.StartInfo.Arguments = "/r:System.dll /out:sample.exe stdstr.cs";
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start(); Console.WriteLine(compiler.StandardOutput.ReadToEnd());compiler.WaitForExit();
是不是如果我在Process p = System.Diagnostics.Process.Start("cmd.exe", "/c a.bat");下面写上p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 这样的语句不会起到隐藏的作用,所以才在start()中做一个重载函数呢?
因为调用bat文件的同时,也在向它传递参数,问题中写的那个调用进程的语句把参数的字符串给省略掉了。如果定义了一个进程是 Process compiler = new Process();这种形式的话,那我的参数该怎么传递呢?
把Sql保存到某个文件中,然后用cmd调用.bat,结果在网上查了一下这样比较麻烦,可以如下操作:
Process p = new Process();
p.StartInfo.FileName = "cmd";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("isql -Usa -P -Ssybase < 文件路径+文件名");
p.StandardInput.WriteLine("exit");
不知道对你是否有帮助!
p.StartInfo.CreateNoWindow = true;
这样就能隐藏的
Process pro = new Process();
pro.StartInfo.FileName = "osql.exe";
pro.StartInfo.Arguments = arg;
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pro.Start();
pro.WaitForExit();
pro.Close();
进程启动后再调用就无效了
要这样:ProcessStartInfo psi = new ProcessStartInfo("C:\\a.bat");
psi.WindowStyle = ProcessWindowStyle.Hidden;
Process p = Process.Start(psi);
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p = System.Diagnostics.Process.Start("cmd.exe", "/c a.bat 参数A 参数B);
我把代码改成了这个样子,依然没有隐藏
而且在p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;这个代码的位置也尝试了p.StartInfo.CreateNoWindow = true; 和p.StartInfo.UseShellExecute = false;
也没有实现了隐藏,不知道是不是因为我放置的位置不对呢?
你写错了,要这样:
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.FileName = "C:\\a.bat";
p.Start();