1

我有一个 Windows 应用程序,它通常只有 GUI,并声明了 WINDOWS 子系统。启动时它不会打开控制台窗口。

唉,当应用程序恰好从控制台窗口(例如,从交互式 cmd.exe)启动时,我想提供额外的控制台输出。

有没有一种方法可以检测“链上”的某个进程是否有一个打开的控制台,并附加到该控制台?

我发现的最接近的是一种为 gui 应用程序显式打开控制台的方法,但如果还没有控制台,我不想打开控制台。

4

1 回答 1

3

乍一看,该AttachConsole()功能似乎可以让您附加到父进程的控制台:

AttachConsole(ATTACH_PARENT_PROCESS);

如果该进程实际上没有控制台,则该函数将失败并显示ERROR_INVALID_HANDLE. 如果您的父进程不再存在,该函数也会失败。如果它失败了,你可以打电话AllocConsole()来创建你自己的。

我从来没有尝试过,所以实际上不知道它是否会起作用:)

于 2013-10-03T20:43:14.933 回答