如何:在 Winform 动态启动、控制台命令行?

需求
   winForm 程序输出类型为 windows 程序(不是命令行程序)
   在运行时想输入一些信息编译开发调试,如何实现这一功能

解答:
  AllocConsole、FreeConsole 这两个 API 可以在任何时候调用和关闭 命令行。

代码演示:
API 部分

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;

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.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
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);
        }
    }
}

如何:在 Winform 动态启动、控制台命令行?

时间: 2024-10-09 14:01:59

如何:在 Winform 动态启动、控制台命令行?的相关文章

ubuntu设置默认启动方式——命令行

有时候我们在一些机器运行ubuntu不流畅,或者个人习惯等一些其他原因,并不想启动桌面程序,我们就需要修改启动方式.下面我们来说一下相关的内容. 单纯的修改启动的方式是很简单的,打开终端,在其中输入 sudo vim /etc/init/lightdm.conf(这个地方补齐一下就行) 修改一下这段的一句: start on ((filesystem and runlevel [!06] and started dbus and plymouth-ready) or runlevel PREVL

js调试系列: 控制台命令行API

上次初步介绍了什么是控制台<js调试系列: 初识控制台>,以及简单的 console.log 输出信息.最后还有两个小问题,我们就当回顾,来看下怎么操作吧. 先打开百度,然后按 F12 打开后,如果不是 Console 项的就点击 Console 这项,因为我们要在控制台操作..看到如下内容:好了我们先清空内容,可以右击选 Clear console 菜单,或者输入 clear() 都行.接着,我们输入 document.getElementById('kw1'); 然后回车,就可以看到 id

第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 设置好Monkey的CLASSPATH环境变量以指定"/system/framework /framework/monkey.jar"后,/system/bin/monkey这个shell脚本就会通

WinForm程序启动控制台窗口Console

本文转载:http://blog.csdn.net/oyi319/article/details/5753311 2.WinForm程序和控制台窗口Console 如果你调试过SharpDevelop的源程序,会发现它在DEBUG模式时会出现一个控制台窗口,以显示日志信息.或许我使用的方法与其不同,不过你可以试一试,写出我们自己的调试日志代码. 首先要解决的问题是如何在Debug模式时显示Console窗口.我确定,这是一个WinForm项目,也没有改过它的输出类型.我们需要在项目的入口点使用一

mac下使用mysql控制台命令行

命令行中输入 open .bash_profile 然后将 alias mysql=/usr/local/mysql/bin/mysqlalias mysqladmin=/usr/local/mysql/bin/mysqladmin 追加到最后面,如果文件不存在,自己创建一个就可以了 然后保存 然后输入 source .bash_profile 最后就能使用mysql来使用shell来使用控制台命令了

windows 控制台 命令行指令换行

由于屏幕较小而指令太长,在书写的时候不好阅读. 其实cmd和Linux一样可以通过特殊符号换行的: Linux 为 \ 而cmd 为 ^         看图 这就很美观了,拯救了我的强迫症 ^_^ 最后补充一下,使用 echo off 可以把控制台的左边的路径去掉 echo on 退出模式 原文地址:https://www.cnblogs.com/bingco/p/11372199.html

设置控制台(命令行)窗口 光标位置,及前背景颜色

#include "stdafx.h" #include <stdio.h> #include <windows.h> /* #define FOREGROUND_BLUE 0x0001 // text color contains blue. #define FOREGROUND_GREEN 0x0002 // text color contains green. #define FOREGROUND_RED 0x0004 // text color cont

关于Django无法启动数据库和无法命令行启动manage.py的解决方法

问题介绍: 本人在两天内也无法解决Django中遇到的一些问题,我学习是看视频学习的,视频中并没有讲解一些东西,我在同步数据库时,无法命令启动.manage.py文件无法启动,命令行报错为无法导入Django,后面不知道自己如何修改了一下,浏览器报的错误为操作错误: OperationalError at /userInfo/ no such table: bolg_userinfo Request Method: POST Request URL: http://127.0.0.1:8000/

每日一测1(带命令行参数运行)

怎么让程序带参数运行以便适应不同的测试环境? 命令行参数在程序中的配置位置是在项目-属性-启动选项-命令行参数里 可以通过Main方法传入命令行参数(控制台程序本身就已带), 传入一个string类型的数组.也可以通过System.Environment这个类取出 static void Main(string[] args)  { for (int i = 0; i < args.Length; i++)      //取出来的直接是参数,没有路径 { Console.WriteLine(&quo