static int RunProgram(string exe, params string[] args)
{
ManualResetEvent mreProcessExit = new ManualResetEvent(false);
ManualResetEvent mreOutputDone = new ManualResetEvent(false);
ManualResetEvent mreErrorDone = new ManualResetEvent(false);
ProcessStartInfo psi = new ProcessStartInfo(exe, String.Join(" ", args));
psi.WorkingDirectory = Environment.CurrentDirectory;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.ErrorDialog = true;
Process process = new Process();
process.StartInfo = psi;
process.Exited += delegate(object o, EventArgs e)
{
Console.WriteLine("Exited.");
mreProcessExit.Set();
};
process.OutputDataReceived += delegate(object o, DataReceivedEventArgs e)
{
if( e.Data != null )
Console.WriteLine("Output: {0}", e.Data);
else
mreOutputDone.Set();
};
process.ErrorDataReceived += delegate(object o, DataReceivedEventArgs e)
{
if (e.Data != null)
Console.Error.WriteLine("Error: {0}", e.Data);
else
mreErrorDone.Set();
};
process.EnableRaisingEvents = true;
Console.WriteLine("Start: {0}", process.StartInfo.FileName);
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
if (process.HasExited)
mreProcessExit.Set();
while(!WaitHandle.WaitAll(new WaitHandle[] { mreErrorDone, mreOutputDone, mreProcessExit }, 100))
continue;
return process.ExitCode;
}
分享到:
相关推荐
C# 判断并激活外部程序窗口 并实现外部程序窗口最大化,不错的代码与大家分享
C#实现异步调用外部程序!
C#关闭外部程序
c# windows服务 启动外部程序,程序已开启,但看不到界面
C#窗体内嵌外部程序(cmd.exe)的显示C#窗体内嵌外部程序(cmd.exe)的显示
C#打开外部exe执行程序并如何关闭打开的执行程序
内容为网摘代码,自己搜罗的一些C#启动执行外部程序的代码,以备不时之需
一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用...
C# WInForm窗体嵌入外部EXE程序
1. C#/.NET的程序,控制外部的 win32程序(win16不做考虑) 2. C#/.NET的程序,控制外部的 .NET程序
最近需要将一个程序用服务来启动现有的一个EXE程序,在网上找了很多的例子,的确有,但是发现最后所有都正常,就是外部程序的界面不显示,这个感觉有点空欢喜一场,然后查录百度等,都是说服务的界面交互要打上勾,...
c#中的Process类可方便的调用外部程序,所以我们可以通过调用cmd.exe程序....
将一个外部exe程序整个嵌入到当前程序界面中,让其融为一体。
C#程序100实例下载 c#程序执行器
C#程序嵌入外部Exe程序实例源码,分享给大家。共同学习进步。
C#Winfrom内嵌外部程序,调用系统api SetParent等等
C#控件 失去Focus焦点事件与获得焦点事件 文本框失去焦点事件 LostFocus GotFocus事件 供大家学习,减为1分了。。。。
C#调用外部程序(整理)
C#关闭外部程序源码
C#通过WIN32API获取外部程序sysListview的值和TreeView的值.pdf