C#:从控制台分离

拉尔夫

我有一个 Windows 窗体应用程序,但当参数通过命令行传递时,它有时表现为无窗体(控制台应用程序)。如果不传递任何参数,则它的行为与正常的 Windows 窗体一样。

当它作为控制台应用程序运行时,我使用 Console.WriteLine() 附加到控制台以输出消息。

[DllImport("kernel32.dll")]
static extern bool AttachConsole(int input);

static void Main(string[] args)
{            
    if (args.Length == 0)
    {   
        Application.Run(new MyForm());
    }
    else 
    {
        // case args.Length > 0
        AttachConsole(-1);
        Console.WriteLine("Start my formless app...");
        new FormLessApp().Start();
    }
}

但我不确定当无形应用程序完成时是否需要从控制台分离。有必要吗?如果是这样,我必须使用哪种 DLL 方法?

罗扬 Gh。

FreeConsoleKernel32.dll. 您可以在此处查看文档

另外根据文档:

进程可以使用 FreeConsole 函数将自身与其控制台分离。如果其他进程共享控制台,则控制台不会被销毁,但调用 FreeConsole 的进程无法引用它。当附加到控制台的最后一个进程终止或调用 FreeConsole 时,控制台将关闭。进程调用 FreeConsole 后,可以调用 AllocConsole 函数来创建新的控制台或 AttachConsole 以附加到另一个控制台。

因此我的猜测是,如果您打算在终止FormLessApp()进程时从控制台分离,则不需要手动执行,它会自动销毁。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Eclipse C / C ++控制台的行为异常

来自分类Dev

C#控制台如何工作?

来自分类Dev

C中的stty RAW控制台

来自分类Dev

读取分离过程的控制台输出

来自分类Dev

C ++程序中的暂停控制台

来自分类Dev

通过C ++控制台输入TCL脚本控制窗口

来自分类Dev

C ++控制台屏幕尺寸

来自分类Dev

C ++编写控制台无延迟

来自分类Dev

C#.net程序的控制台

来自分类Dev

单击关闭控制台窗口以结束c ++控制台程序是正确的方法吗?

来自分类Dev

防止用户在C#中输入空控制台

来自分类Dev

Rails控制台“共享” CTRL + C

来自分类Dev

更新控制台而不会闪烁-C ++

来自分类Dev

C#:控制台输出无限(∞)

来自分类Dev

验证C ++中的控制台输入

来自分类Dev

从控制台应用程序创建新控制台?C ++

来自分类Dev

C#控制台不断进行

来自分类Dev

C ++控制台“屏幕捕获”问题

来自分类Dev

无法分离/杀死节点服务器上的XM控制台

来自分类Dev

c ++控制台鼠标事件

来自分类Dev

在分离的tmux会话中运行命令,并将控制台输出记录到文件

来自分类Dev

如何自动关闭Windows控制台(以编程方式发送CTRL + C到控制台)?

来自分类Dev

单击关闭控制台窗口以结束c ++控制台程序是正确的方法吗?

来自分类Dev

Win32控制台写入(C / C ++)

来自分类Dev

如何关闭VirtualBox“分离/无头”控制台窗口?

来自分类Dev

如何通过串行控制台以分离模式运行GNU屏幕并保存输出?

来自分类Dev

C ++-从控制台获取字节

来自分类Dev

C ++ Gotoxy脱离控制台

来自分类Dev

C#控制台输入