让用户在不退出进程的情况下关闭进程的已分配控制台?

时间:2012-10-31 22:21:30

标签: c++ winapi visual-c++ console visual-studio-2012

在Visual C ++中使用Win32 API,我想在Windows子系统下创建一个程序,该程序为AllocConsole分配一个控制台,并用WriteConsole写入。但是,如果用户关闭控制台,则该进程应继续在后台运行。就目前而言,我无法做到这一点。当在控制台标题栏上按下X时,该过程退出。

有什么特别的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

关键是响应用户尝试关闭控制台时引发的Console Control Event。然后,您可以调用FreeConsole从控制台分离程序,然后销毁控制台。那个应该让你的程序继续运行。

其他信息:

如果在HandlerRoutine退出时终止进程,那么我的建议无法按预期工作。如果是这种情况,那么您可能会遇到问题。您可以尝试挂钩SC_CLOSE系统消息,并在传递消息之前执行FreeConsole。那个可能会工作,虽然我不知道如果用户按下Ctrl + C或Ctrl + Break会怎么做。

问题是控制处理程序退出进程。可能是在FreeConsole中调用HandlerRoutine为时已晚。