我已经知道如何捕获控制台窗口的标准输出,但是我的问题是当我使用GetProcesses/orByName获取进程并且不自己启动()时。这里是代码:控制台信息到窗口
public ProcessCaller(ISynchronizeInvoke isi, Process MárFutóAlkalmazás)
: this(isi)
{
//alapbeállítások
FileName = MárFutóAlkalmazás.StartInfo.FileName;
Arguments = MárFutóAlkalmazás.StartInfo.Arguments;
WorkingDirectory = MárFutóAlkalmazás.StartInfo.WorkingDirectory;
//egyedi beállítások
process = MárFutóAlkalmazás;
process.EnableRaisingEvents = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
new MethodInvoker(ReadStdOut).BeginInvoke(null, null);
new MethodInvoker(ReadStdErr).BeginInvoke(null, null);
//események
StdErrReceived += new DataReceivedHandler(Loggolás);
StdOutReceived += new DataReceivedHandler(Loggolás);
//kilépés jelzése
process.Exited += new EventHandler(OnKilépés);
}
因此,此方法获取并已运行的应用程序作为MárFutóAlkalmazás参数。设置一些内部属性,然后挂钩到输出。然而,当涉及到
StdOutReceived += new DataReceivedHandler(Loggolás);
和程序运行Loggolás方法把控制台的数据,它说,StandardOut没有设置,或者进程没有启动。
好:
- StandardOut设置
- 进程正在运行,因为我通过GetProcesses得到它
- 在这个程序中,我不使用的Process.Start() - 因为它已经开始
寻求帮助。感谢yas: Péter
+1:优秀的第一个问题,非常好问。我们需要更多像你这样的新用户:) – 2010-08-26 09:57:30
[Capture from output:from unrelated process](http://stackoverflow.com/questions/429225/capture-output-from-unrelated-process) – 2010-08-26 10:00:58
我检查过“Capture output来自不相关的进程“,并且在修改代码之后,我得到了相同的错误消息:StandardOut(没有这样的属性,BTW,只有StandardOutput)未设置,或者进程未启动。 – 2010-08-26 10:46:26