C#中的WinForm调用控制台进行信息显示

来源:互联网 发布:淘宝网页怎么制作 编辑:程序博客网 时间:2024/06/05 09:18

有时需要窗体来调出控制台,显示日志文件中正在发生的记录。

这时就需要用AllocConsole()


        [DllImport("Kernel32.dll")]

       privatestaticexternbool AllocConsole();


        [DllImport("kernel32.dll",

            EntryPoint ="GetStdHandle",

            SetLastError =true,

            CharSet =CharSet.Auto,

            CallingConvention =CallingConvention.StdCall)]

       privatestaticexternIntPtr GetStdHandle(int nStdHandle);


       privateconstint STD_OUTPUT_HANDLE = -11;


        privatevoid setOutput()

        {

            AllocConsole();

           IntPtr stdHandle = GetStdHandle(STD_OUTPUT_HANDLE);

           SafeFileHandle safeFileHandle =new SafeFileHandle(stdHandle,true);

           FileStream fileStream =new FileStream(safeFileHandle,FileAccess.Write);

           Encoding encoding = System.Text.Encoding.GetEncoding(Console.OutputEncoding.CodePage);

           StreamWriter standardOutput =new StreamWriter(fileStream, encoding);

            standardOutput.AutoFlush =true;

           Console.SetOut(standardOutput);


        }


原创粉丝点击