为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 C# 程序写回命令行

如何从 C# 程序写回命令行

C#
ABOUTYOU 2023-09-16 20:10:25
接受 CLI 参数的 Winform 应用程序在运行时会打开新的控制台窗口,但我希望它在 CLI 中运行并返回任何 Console.WriteLine()这就是我如何分离 GUI 和控制台static class program{    [STAThread]    [System.Runtime.InteropServices.DllImport("kernel32.dll")]    private static extern bool AllocConsole();    static void Main(string[] args){        if (args.Length > 0)        {            AllocConsole();            Console.WriteLine("Yo!");            Console.ReadKey();        }        else        {            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            Application.Run(new someForm());        }    }}“哟!” 出现在新的控制台窗口中,但我希望它出现在命令界面中
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

除了您的代码之外,您还需要更改以下内容:


1) 在项目设置页面中将项目类型设置为Console Application。WinForms如果未提供命令行参数,您的“模式”将按预期运行。


2) 删除对 的调用AllocConsole。


3) 如果您运行的是 WinForms 模式,请隐藏控制台窗口。


这是完整的代码:


[System.Runtime.InteropServices.DllImport("kernel32.dll")]

static extern IntPtr GetConsoleWindow();


[System.Runtime.InteropServices.DllImport("user32.dll")]

static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);


[STAThread]

static void Main(string [] args)

{

    if (args.Length > 0)

    {              

        Console.WriteLine("Yo!");

        Console.ReadKey();

    }

    else

    {

        ShowWindow(GetConsoleWindow(), 0);

        Application.EnableVisualStyles();

        Application.SetCompatibleTextRenderingDefault(false);

        Application.Run(new Form1());

    }                

}


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信