国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

在Winform動態(tài)啟動、控制臺命令行的方法

2020-01-24 03:35:24
字體:
供稿:網(wǎng)友

需求
winForm 程序輸出類型為 windows 程序(不是命令行程序)
在運行時想輸入一些信息編譯開發(fā)調(diào)試,如何實現(xiàn)這一功能

解答:

AllocConsole、FreeConsole 這兩個 API 可以在任何時候調(diào)用和關(guān)閉 命令行。

代碼演示:
API 部分

復(fù)制代碼 代碼如下:

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();
    }
}


啟動參數(shù)的實現(xiàn)
復(fù)制代碼 代碼如下:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// 應(yīng)用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                if (args.Length > 0 && args[0].ToLower() == "-c")
                {//通過命令行 xxxx.exe -c 參數(shù)啟動,Console

                    //注意:不用 Main(string[] args)、System.Environment.GetCommandLineArgs();  也可以取得命令行參數(shù)在任何地方

                    //啟動
                    NativeMethods.AllocConsole();
                    Console.WriteLine("控制臺以啟動");
                }

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            finally
            {
                //關(guān)閉 (如果在這個位置其實寫不寫都行了)
                NativeMethods.FreeConsole();
            }
        }
    }
}


程序?qū)崿F(xiàn)
復(fù)制代碼 代碼如下:

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)
        {
            //關(guān)閉控制臺
            NativeMethods.FreeConsole();
        }

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


代碼下載:(VS2008 如果其他版本VS請自行修改)
http://xiazai.VeVB.COm/201302/other/WinformShellConsole_VS08.rar

最后:

其實代碼很簡單,不過很適合在運行時輸出一些臨時調(diào)試信息
用GUI畫圖的操作一般下斷點很容易影響Print 事件的情況
,有時候在客戶那里程序問題在上打開控制臺輸出一些調(diào)試信息看著比較方便;
而且控制太沒有線程限制的,所以使用起來要比單獨的日志窗口方便、而且容易復(fù)制內(nèi)容,還支持 paus 鍵;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁国市| 巨野县| 宾川县| 河南省| 丰原市| 井研县| 平武县| 肥乡县| 怀化市| 营口市| 邵东县| 潢川县| 雅江县| 湘潭市| 宿松县| 荆门市| 蒲江县| 鹤山市| 汝阳县| 宁津县| 龙南县| 神农架林区| 永靖县| 兴仁县| 双辽市| 沁源县| 桃源县| 米林县| 哈尔滨市| 仲巴县| 庆元县| 宣威市| 平南县| 麻栗坡县| 五家渠市| 微山县| 股票| 蒲城县| 石泉县| 丰城市| 城步|