Es gibt auf Sourceforge.NET das Projekt Console2. Dieses injiziert in Kindprozesse eine
DLL, die unter anderem das Konsolenfenster unterdrückt und ausliest. Das, was in dieser
DLL passiert, müsstest du ja auch in deinem eigenen Programm machen können, und dabei müsstest du auch herausfinden können, ob nun eine Konsole da ist oder nicht. Vielleicht ist das interessant für dich, schau mal in den (leider nur mittelmäßig kommentierten) Quellcode.