1

使用 Visual C++ 中的 Win32 API,我想在 Windows 子系统下创建一个程序,该程序AllocConsoleWriteConsole. 但是,如果用户关闭控制台,该进程应该继续在后台运行。就目前而言,我不能让这种情况发生。当在控制台标题栏上按下 X 时,进程退出。

有什么特别的方法可以做到这一点吗?

提前致谢!

4

1 回答 1

3

关键是响应用户尝试关闭控制台时引发的控制台控制事件。然后,您可以调用FreeConsole将您的程序与控制台分离,并让控制台被销毁。这应该让你的程序运行。

附加信息:

如果HandlerRoutine退出时进程终止,那么我的建议没有按预期工作。如果是这种情况,那么您可能会遇到问题。您可以尝试挂钩 SC_CLOSE 系统消息,并FreeConsole在传递消息之前执行此操作。这可能会起作用,尽管我不知道如果用户按下 Ctrl+C 或 Ctrl+Break 会发生什么。

问题是控制处理程序退出了进程。可能是打电话太晚了FreeConsoleHandlerRoutine

于 2012-10-31T22:39:55.747 回答