C#截获因程序指令而输出在控制台的信息
我在使用一款软件产品的.dll文件时,在一句指令完成后,会自动在控制台下输出一些信息,现在我想捕获这些信息。尝试过使用process,但好像这种方法只能是去执行debug文件夹下的.exe文件,这不符合我的要求。我希望是截获随着程序指令的执行完成而完成,又随着下一轮的指令执行而继续进行,也就是说跟随指令同步捕获。
请各位给点儿提示和建议,我是新手,也请各位提出建议的同时尽量指明指令,谢谢! --------------------编程问答-------------------- 追加问题:用流的相关操作可以吗? --------------------编程问答-------------------- 可以给一个思路,windows里面有窗口都是基于消息的,你可以考虑一下从系统窗口消息来截取 --------------------编程问答-------------------- 可以用Console.SetOut()重定向控制台的输出流,然后在有输出时处理就可以了。下面的代码是从MSDN摘出来的例子。
using System;
using System.IO;
public class InsertTabs {
private const int tabSize = 4;
private const string usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt";
public static int Main(string[] args) {
StreamWriter writer = null;
if (args.Length < 2) {
Console.WriteLine(usageText);
return 1;
}
try {
// Attempt to open output file.
writer = new StreamWriter(args[1]);
// Redirect standard output from the console to the output file.
Console.SetOut(writer);
// Redirect standard input from the console to the input file.
Console.SetIn(new StreamReader(args[0]));
}
catch(IOException e) {
TextWriter errorWriter = Console.Error;
errorWriter.WriteLine(e.Message);
errorWriter.WriteLine(usageText);
return 1;
}
string line;
while ((line = Console.ReadLine()) != null) {
string newLine = line.Replace(("").PadRight(tabSize, ' '), "\t");
Console.WriteLine(newLine);
}
writer.Close();
// Recover the standard output stream so that a
// completion message can be displayed.
StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput);
Console.WriteLine("INSERTTABS has completed the processing of {0}.", args[0]);
return 0;
}
}
补充:.NET技术 , C#