C#截获因程序指令而输出在控制台的信息

问题描述

我在使用一款软件产品的.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;}}

时间: 2024-10-14 19:02:05

C#截获因程序指令而输出在控制台的信息的相关文章

方法-关于logback如何按等级输出到控制台和保存到日志文件

问题描述 关于logback如何按等级输出到控制台和保存到日志文件 我现在这个项目要把log4j转成用logback,之前在log4j中的分级方法是好用的,结果在写logback的demo测试中不好用了,望大神给看看,下面是配置文件的源码 <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="D" class="ch.q

.NET Core的日志[2]:将日志输出到控制台

对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,ConsoleLogger对应的LoggerProvider类型为ConsoleLoggerProvider,这两个类型都定义在 NuGet包"Microsoft.Extensions.Logging.Console"之中. 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录

iostream-EGE新手,为什么那就Hello world 没有输出在控制台,我用的是codeblocks

问题描述 EGE新手,为什么那就Hello world 没有输出在控制台,我用的是codeblocks EGE新手,为什么那就Hello world 没有输出在控制台,我用的是codeblocks #include #include #include using namespace std; int main() { initgraph(640, 480); cout<<"hello world "<<endl; setfillcolor(EGERGB(0xFF

文件读取再输出到控制台,为啥陷入死循环?

问题描述 文件读取再输出到控制台,为啥陷入死循环? 把bbf.clear()注释后就陷入死循环,我读取的file文件中就一个import,为啥会陷入死循环?想不清啊,有人能解答下么,不胜感激 解决方案 http://tieba.baidu.com/p/4397173159

java如何将输出在控制台的数据输出在textarea中

问题描述 java如何将输出在控制台的数据输出在textarea中 编写了一个用户界面程序 想实现点击查询按钮能够在textarea中显示数据库中内容的功能,关于数据库输出已经编写完成,代码如下 ```public class mysql { public void input(String databasename,String username,String password) { try { Class.forName("com.mysql.jdbc.Driver"); //加载

Eclipse对printf()不能输出到控制台的快速解决方法_C 语言

Eclipse的控制台经常对C语言的printf不能正常输出,究其原因,就是因为输出内容停留在了输出缓冲区里,而没有及时输出到控制台界面,解决的方法很简单:在每个printf后加上fflush(stdout)即可,或者,像我一样,把printf用一个宏封装一下: 复制代码 代码如下: #define OUTPUT_STR(str) do{printf(str);fflush(stdout);}while(0)

java-为什么只能输出一条图书信息

问题描述 为什么只能输出一条图书信息 为什么这样写,不能输出所有list集合的图书信息....... 解决方案 librarian.list从哪里来的,里面有没有很多条数据,调试下. 解决方案二: 首先打印下list看看有多少个元素

C语言的递归输出,会输出重复的打印信息,不知道是不是跟输出流缓冲有关

问题描述 C语言的递归输出,会输出重复的打印信息,不知道是不是跟输出流缓冲有关 我写的单向链表创建和遍历打印的函数输出一些信息,不知道是怎么来的,希望各位大神能给予指点. 代码: #include #include #include #include typedef struct node{ char value; struct node *m_next; }inode; void CreateNodeTree(inode **treenode) { char a; printf("input

ios. 图文混排后,如何输出带有格式的信息呢

问题描述 ios. 图文混排后,如何输出带有格式的信息呢 客户端需要能够在编辑文本过程中插入图片,将带有格式信息上传服务器,这样才能在下次获取时,保持原有格式,谁来告诉我怎么做呢 解决方案 参考代码http://code4app.com/ios/解析HTML/5167ca396803faf447000002 不知道是否能帮到你, 其实我也很想知道这方面的技术,一起研究探讨吧 解决方案二: coretext解决