Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89951
  • 博文数量: 22
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 11:02
文章分类

全部博文(22)

文章存档

2011年(1)

2010年(21)

我的朋友

分类: WINDOWS

2010-05-10 15:42:04

我们在创建 C# 的console工程时, 可以很简单的使用 Console.writeline() 等函数将输出送到控制台显示. 但是在我们创建winform工程时, 使用Console.writeline()等函数缺不能直接将结果送到控制台显示.
虽然Console.writeline()等函数可以把结果发送到调试环境的output显示,但是当我们所创建的应用程序需要在命令行下工作时, 我们希望在cmd.exe dos串口下,可以直接调用我们的应用程序并传递参数, 例如:
A.exe param1,param2 .. 然后我们的执行结果也通过当前的命令行窗口返回.

总而言之,我们是希望在winform工程里把结果输出到控制台上.

在C#中通过调用api函数: AttachConsole()可以把当前应用程序的控制台连接到它的父进程上.
如下红色代码, 可以实现输出到控制台, 但是当有输出重定向需求时,无法实现:例如: a.exe > a.text.

static class Program
{
        [DllImport("kernel32.dll")]
        static extern bool AttachConsole(int dwProcessId);
        private const int ATTACH_PARENT_PROCESS = -1;

        [STAThread]
        static void Main(string[] args)
        {
            // redirect console output to parent process;
            // must be before any calls to Console.WriteLine()
            AttachConsole(ATTACH_PARENT_PROCESS);

            Console.WriteLine("This is a test");

         

           //..... add code here.

        }

}

阅读(21597) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~