C# WindowsForm界面控制命令行控制台显示隐藏的办法

[软件开发] 季雨林 2022/7/7 13:38:50

做winform开发时候,有些临时性的信息,不太适合显示到界面,但是需要依赖控制台等方式打印出来方便调试,这时候就有了今天文章中描述的场景需求。分为几个关键点的组合。


1,常规windowsForm项目:

没有控制台命令行,Console.WriteLine信息没法直接看到输出。


2,带命令行窗体的Windows Form应用程序。

在第一种场景里做一个微调:在解决方案管理器下,项目的属性里,修改输出类型为:控制台应用程序。这时候启动程序就可以同时实现显示窗体和命令行。

对于大部分开发,开发期间这么配置,发布之前把输出类型改回Windows 应用程序即可。


3,更强大的可控模式。

为了让调试变得方便,我在项目里一般更喜欢选择这个方式,我开发的窗体,默认全部是控制台应用程序。然后我通过代码,结合配置文件,启动时候默认关闭命令行,需要时候通过修改配置文件和按钮触发,打开命令行。控制命令行是否显示的代码如下

step1,引用类库:

using System.Runtime.InteropServices;

step2,调用系统函数:

[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll")]
private static extern bool ShowConsoleWindow(IntPtr hWnd, int nCmdShow);
private const int SW_HIDE = 0;//隐藏
private const int SW_NORMAL = 1;
private const int SW_MAXIMIZE = 3;
private const int SW_SHOWNOACTIVATE = 4;
private const int SW_SHOW = 5;//显示
private const int SW_MINIMIZE = 6;
private const int SW_RESTORE = 9;
private const int SW_SHOWDEFAULT = 10;

step3,代码触发方式:

//获取句柄
var handle = GetConsoleWindow();
//隐藏窗体
ShowConsoleWindow(handle, SW_HIDE);
//显示窗体
ShowConsoleWindow(handle, SW_SHOW);

这样一来,就完全可以轻松零活的使用控制台进行开发阶段的调试了。


原文地址: https://www.opengps.cn/Blog/View.aspx?id=977 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示