手机
当前位置:查字典教程网 >编程开发 >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动态启动、控制台命令行的方法】相关文章:

简介Winform中创建用户控件

c#.net 常用函数和方法集

c#实现用SQL池,多线程定时批量执行SQL语句的方法

SQL语句删除和添加外键、主键的方法

C#定位txt指定行的方法小例子

C# 抓取网页内容的方法

在C#中创建和读取XML文件的实现方法

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

C#中控制远程计算机的服务的方法

.NET创建、删除、复制文件夹及其子文件的实例方法

精品推荐
分类导航