在Visual C ++中使用Win32 API,我想在Windows子系统下创建一个程序,该程序为AllocConsole
分配一个控制台,并用WriteConsole
写入。但是,如果用户关闭控制台,则该进程应继续在后台运行。就目前而言,我无法做到这一点。当在控制台标题栏上按下X时,该过程退出。
有什么特别的方法吗?
提前致谢!
答案 0 :(得分:2)
关键是响应用户尝试关闭控制台时引发的Console Control Event。然后,您可以调用FreeConsole从控制台分离程序,然后销毁控制台。那个应该让你的程序继续运行。
其他信息:
如果在HandlerRoutine
退出时终止进程,那么我的建议无法按预期工作。如果是这种情况,那么您可能会遇到问题。您可以尝试挂钩SC_CLOSE系统消息,并在传递消息之前执行FreeConsole
。那个可能会工作,虽然我不知道如果用户按下Ctrl + C或Ctrl + Break会怎么做。
问题是控制处理程序退出进程。可能是在FreeConsole
中调用HandlerRoutine
为时已晚。