日期:2014-05-18  浏览次数:21021 次

C#启动外部程序,但不显示其界面
C#启动外部程序,想隐藏界面,使用ProcessStartInfo.CreateNoWindow=true和ProcessStartInfo.WindowStyle=ProcessWindowStyle.Hidden都不管用,都不能隐藏界面,

请问应该怎么做才能隐藏?

------解决方案--------------------
C# code

Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.WorkingDirectory = workingDirectory;
            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(command);
            p.StandardInput.WriteLine("exit");

------解决方案--------------------
VC写的程序,需要在显示窗体的代码逻辑中判断从命令行传入的cmdshow参数,并且在程序中决定是显示还是不显示,这样才有用。mfc程序框架应该是实现了的,sdk的程序就要看写程序的人自己有没有这样的考虑了。
------解决方案--------------------
不想有界面的话 可以写成服务
google 
C#创建Windows服务
------解决方案--------------------
Process p = new Process();
p.StartInfo.FileName = "ConsoleApplication1.exe";
p.StartInfo.Arguments = TextBox1.Text;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.Start();
p.WaitForExit();
------解决方案--------------------
除非拦截API,给ShowWindow挂钩。
------解决方案--------------------
我是在快捷方式上加参数,然后让窗体判断第一次显示的时候隐藏窗体,并设置窗体最小化显示不在任务栏中显示,这样就不会闪了。
------解决方案--------------------
啊哦 只能用api了 发消息给窗体 用参数控制是否显示或隐藏窗体..
------解决方案--------------------
要目标程序的支持才行吧