我有一个 Windows 应用程序,它通常只有 GUI,并声明了 WINDOWS 子系统。启动时它不会打开控制台窗口。
唉,当应用程序恰好从控制台窗口(例如,从交互式 cmd.exe)启动时,我想提供额外的控制台输出。
有没有一种方法可以检测“链上”的某个进程是否有一个打开的控制台,并附加到该控制台?
我发现的最接近的是一种为 gui 应用程序显式打开控制台的方法,但如果还没有控制台,我不想打开控制台。
我有一个 Windows 应用程序,它通常只有 GUI,并声明了 WINDOWS 子系统。启动时它不会打开控制台窗口。
唉,当应用程序恰好从控制台窗口(例如,从交互式 cmd.exe)启动时,我想提供额外的控制台输出。
有没有一种方法可以检测“链上”的某个进程是否有一个打开的控制台,并附加到该控制台?
我发现的最接近的是一种为 gui 应用程序显式打开控制台的方法,但如果还没有控制台,我不想打开控制台。
乍一看,该AttachConsole()
功能似乎可以让您附加到父进程的控制台:
AttachConsole(ATTACH_PARENT_PROCESS);
如果该进程实际上没有控制台,则该函数将失败并显示ERROR_INVALID_HANDLE
. 如果您的父进程不再存在,该函数也会失败。如果它失败了,你可以打电话AllocConsole()
来创建你自己的。
我从来没有尝试过,所以实际上不知道它是否会起作用:)