使用 Visual C++ 中的 Win32 API,我想在 Windows 子系统下创建一个程序,该程序AllocConsole
用WriteConsole
. 但是,如果用户关闭控制台,该进程应该继续在后台运行。就目前而言,我不能让这种情况发生。当在控制台标题栏上按下 X 时,进程退出。
有什么特别的方法可以做到这一点吗?
提前致谢!
使用 Visual C++ 中的 Win32 API,我想在 Windows 子系统下创建一个程序,该程序AllocConsole
用WriteConsole
. 但是,如果用户关闭控制台,该进程应该继续在后台运行。就目前而言,我不能让这种情况发生。当在控制台标题栏上按下 X 时,进程退出。
有什么特别的方法可以做到这一点吗?
提前致谢!
关键是响应用户尝试关闭控制台时引发的控制台控制事件。然后,您可以调用FreeConsole将您的程序与控制台分离,并让控制台被销毁。这应该让你的程序运行。
附加信息:
如果HandlerRoutine
退出时进程终止,那么我的建议没有按预期工作。如果是这种情况,那么您可能会遇到问题。您可以尝试挂钩 SC_CLOSE 系统消息,并FreeConsole
在传递消息之前执行此操作。这可能会起作用,尽管我不知道如果用户按下 Ctrl+C 或 Ctrl+Break 会发生什么。
问题是控制处理程序退出了进程。可能是打电话太晚了FreeConsole
。HandlerRoutine