Winform 동적 시작,콘 솔 명령 행 방법

winForm 프로그램 출력 형식 이 필요 합 니 다.windows 프로그램(명령 행 프로그램 이 아 닙 니 다)이 실 행 될 때 정보 컴 파일 개발 디 버 깅 을 입력 하려 면 어떻게 해 야 합 니까?
해답:
AllocConsole,FreeConsole 두 API 는 명령 줄 을 언제든지 호출 하고 닫 을 수 있 습 니 다.
코드 데모:API 부분

using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
    public partial class NativeMethods
    {
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        public static extern bool AllocConsole();
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        [DllImport("kernel32.dll")]
        public static extern bool FreeConsole();
    }
}

시작 매개 변수 구현

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// 。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                if (args.Length > 0 && args[0].ToLower() == "-c")
                {// xxxx.exe -c ,Console

                    // : Main(string[] args)、System.Environment.GetCommandLineArgs(); 

                    //
                    NativeMethods.AllocConsole();
                    Console.WriteLine(" ");
                }

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            finally
            {
                // ( )
                NativeMethods.FreeConsole();
            }
        }
    }
}

프로그램 구현

using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnOpenConsole_Click(object sender, EventArgs e)
        {
            //
            NativeMethods.AllocConsole();
        }

        private void btnCloseConsole_Click(object sender, EventArgs e)
        {
            //
            NativeMethods.FreeConsole();
        }

        private void btnOut_Click(object sender, EventArgs e)
        {
            //
            Console.WriteLine(textBox1.Text);
        }
    }
}

코드 다운로드:(VS 2008 다른 버 전 VS 는 스스로 수정 하 십시오)http://xiazai.jb51.net/201302/other/WinformShellConsole_VS08.rar
마지막:
사실 코드 는 매우 간단 하지만 실행 할 때 임시 디 버 깅 정 보 를 출력 하 는 데 적합 합 니 다.GUI 로 그림 을 그 리 는 작업 은 일반적으로 인 터 럽 트 가 Print 사건 의 상황 에 영향 을 주기 쉽 습 니 다.가끔 은 고객 에 게 프로그램 문제 가 위 에서 콘 솔 을 열 어 디 버 깅 정 보 를 출력 하 는 것 이 편리 합 니 다.또한 스 레 드 제한 이 너무 없 기 때문에 단독 로그 창 보다 사용 하기에 편리 하고 내용 을 복사 하기 쉬 우 며 paus 키 도 지원 합 니 다.

좋은 웹페이지 즐겨찾기