手机
当前位置:查字典教程网 >编程开发 >C#教程 >在Winform动态启动、控制台命令行的方法
在Winform动态启动、控制台命令行的方法
摘要:需求winForm程序输出类型为windows程序(不是命令行程序)在运行时想输入一些信息编译开发调试,如何实现这一功能解答:AllocCo...

需求

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

}

}

}

代码下载:(VS2008 如果其他版本VS请自行修改)

http://xiazai.jb51.net/201302/other/WinformShellConsole_VS08.rar

最后:

其实代码很简单,不过很适合在运行时输出一些临时调试信息

用GUI画图的操作一般下断点很容易影响Print 事件的情况

,有时候在客户那里程序问题在上打开控制台输出一些调试信息看着比较方便;

而且控制太没有线程限制的,所以使用起来要比单独的日志窗口方便、而且容易复制内容,还支持 paus 键;

【在Winform动态启动、控制台命令行的方法】相关文章:

C# WinForm中Panel实现用鼠标操作滚动条的实例方法

C#中隐式运行CMD命令行窗口的方法

C#使用非托管代码直接修改字符串的方法

Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现

C# 如何在MVC3中取消备用控制器的选择

在Form_Load里面调用Focus无效的解决方法

C#中使用IrisSkin2.dll美化WinForm程序界面的方法

使用 C# 动态编译代码和执行的代码

使用SmtpClient发送邮件的方法

C# 抓取网页内容的方法

精品推荐
分类导航