当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,