Is there a way for a windows-subsystem application

2019-08-09 19:31发布

问题:

I have a Windows application application that is normally GUI-only and declares the WINDOWS subsystem. It doesn't open a console window when launched.

Alas, I would like to offer additional console output when the application happens to be started from console window (say, from interactive cmd.exe).

Is there a way of detecting if some process "up the chain" has an open console, and to attach to that console?

The closest I've found is a way to explicitly open a console for a gui application, but I don't want to open a console if there isn't one already there.

回答1:

At first glance it seems like the AttachConsole() function will let you attach to the console of your parent process:

AttachConsole(ATTACH_PARENT_PROCESS);

If the process doesn't actually have a console the function will fail with ERROR_INVALID_HANDLE. The function will also fail if your parent process no longer exists. If it fails you can then call AllocConsole() to create your own.

I've never tried this so don't actually know if it will work or not :)