在 Winform 动态启动、控制台命令行
来源:互联网 发布:模拟信道与数据信道 编辑:程序博客网 时间:2024/06/07 05:17
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);
}
}
}
最后:
其实代码很简单,不过很适合在运行时输出一些临时调试信息
用GUI画图的操作一般下断点很容易影响Print 事件的情况
,有时候在客户那里程序问题在上打开控制台输出一些调试信息看着比较方便;
而且控制太没有线程限制的,所以使用起来要比单独的日志窗口方便、而且容易复制内容,还支持 paus 键;
- 在 Winform 动态启动、控制台命令行
- 在Winform动态启动、控制台命令行的方法
- 在winform中动态启动命令行
- WinForm程序启动控制台窗口Console
- 在Winform程序运行时启动Cmd命令行显示日志信息
- 在Winform程序运行时启动Cmd命令行显示日志信息
- 全局程序集GlobalAssemblyInfo.cs及WinForm程序如何在Debug模式下启动控制台窗口Console
- oracle在windows命令行启动
- 在控制台、WinForm项目中的嵌入mdf文件(注)
- C#在winform中调用系统控制台输出
- C#在控制台工程中嵌入winform窗体
- C#在winform中调用系统控制台输出
- 在新窗口启动控制台程序,并且最小化
- 在新窗口启动控制台程序,并且最小化
- C++控制台程序 启动 控制台程序(以及命令行参数传递)
- 在winform程序中启动wpf窗体
- 在winform程序中启动wpf窗体
- 在控制台命令行中显示unicode字符(转)
- android的surfaceView介绍
- XML操作类
- 关于 Listfind 相关使用
- 让linux也整点报时
- 阅读笔记:Detecting Near-Duplicates for Web Crawling
- 在 Winform 动态启动、控制台命令行
- 第一篇
- 演练:创建您的第一个 Silverlight 应用程序
- WebService
- Visual Assist 添加支持*.cu文件
- DSP 由C升级至C++的错误error: symbol referencing errors 解决办法.
- 网络地址转换的类型
- CentOS5下Python-2.5安装——笔记
- Vxworks中TCP服务器端的SO_KEEPALIVE的超时设置