问题描述
我在使用一款软件产品的.dll文件时,在一句指令完成后,会自动在控制台下输出一些信息,现在我想捕获这些信息。尝试过使用process,但好像这种方法只能是去执行debug文件夹下的.exe文件,这不符合我的要求。我希望是截获随着程序指令的执行完成而完成,又随着下一轮的指令执行而继续进行,也就是说跟随指令同步捕获。请各位给点儿提示和建议,我是新手,也请各位提出建议的同时尽量指明指令,谢谢!
解决方案
解决方案二:
追加问题:用流的相关操作可以吗?
解决方案三:
可以给一个思路,windows里面有窗口都是基于消息的,你可以考虑一下从系统窗口消息来截取
解决方案四:
可以用Console.SetOut()重定向控制台的输出流,然后在有输出时处理就可以了。下面的代码是从MSDN摘出来的例子。usingSystem;usingSystem.IO;publicclassInsertTabs{privateconstinttabSize=4;privateconststringusageText="Usage:INSERTTABSinputfile.txtoutputfile.txt";publicstaticintMain(string[]args){StreamWriterwriter=null;if(args.Length<2){Console.WriteLine(usageText);return1;}try{//Attempttoopenoutputfile.writer=newStreamWriter(args[1]);//Redirectstandardoutputfromtheconsoletotheoutputfile.Console.SetOut(writer);//Redirectstandardinputfromtheconsoletotheinputfile.Console.SetIn(newStreamReader(args[0]));}catch(IOExceptione){TextWritererrorWriter=Console.Error;errorWriter.WriteLine(e.Message);errorWriter.WriteLine(usageText);return1;}stringline;while((line=Console.ReadLine())!=null){stringnewLine=line.Replace(("").PadRight(tabSize,''),"t");Console.WriteLine(newLine);}writer.Close();//Recoverthestandardoutputstreamsothata//completionmessagecanbedisplayed.StreamWriterstandardOutput=newStreamWriter(Console.OpenStandardOutput());standardOutput.AutoFlush=true;Console.SetOut(standardOutput);Console.WriteLine("INSERTTABShascompletedtheprocessingof{0}.",args[0]);return0;}}