C# Konsolenanwendung und WinForms bei unterdrücktem Fenster

Registriert
Juli 2013
Beiträge
120
Ich habe eine Konsolenanwendung, die von einem anderen Programm gestartet wird (eben jenes Programm ist nicht abänderbar). Dieses Programm unterdrückt das Konsolenfenster und leitet den Output zu sich selbst um. Jetzt möchte ich aber innerhalb dieser Konsolenanwendung ein WinForms-Fenster als Dialog öffnen. Das funktioniert solange die Konsolenanwendung nicht vom Programm, sondern direkt aufgerufen wird.
Die Frage ist jetzt, wie ich die Fensterunterdrückung für den Dialog umgehen kann, sodass dieser dann auch wirklich angezeigt wird?

Ich hatte die Idee den Dialog in eine zweite Anwendung auszulagern und per Sockets die Informationen zurückzuschicken. Ich hätte aber gerne eine "saubere" Lösung, nämlich die oben beschriebene, dass ich die Fensterunterdrückung nur für den Dialog umgehen kann.

Weiß jemand wie sowas geht?
Vielen vielen Dank im Voraus!

Lance Vance ("The poor bastard")





EDIT:
Problem selbst gelöst. Hat sich herausgestellt, dass bei "CreateNoWindow" nichts anderes gemacht wird, als das Fenster (nur) zu verstecken. Es lässt sich dann ganz leicht so sichtbar machen:
http://stackoverflow.com/questions/8210095/c-sharp-show-hidden-window

Trotzdem vielen Dank!
 
Zuletzt bearbeitet:
Habe ich das jetzt so verstanden: Die gestartete Konsolenanwendung entwickelst du selbst?

Ich habe selbst so eine Fensterunterdrückung mal programmiert, das funktioniert über die EnumWindows-Funktion und vergleicht die PID des Fensterprozesses mit der des gestarteten.

Das scheitert jedoch an einer Stelle: Wenn der Prozess einen Subprozess startet. Das müsstest du jetzt mal probieren. Starte einfach deine Konsolenanwendung in der Konsolenanwendung nochmal (CreateProcess, natürlich einen Parameter übergeben dass keine Endlosschleife entsteht) und schau ob's klappt. Ist zwar auch Trick 17 mit anschleichen, ist aber noch halbwegs sauber.
Ergänzung ()

Schade, zu spät :-) Aber gut dass du was gefunden hast.
Ergänzung ()

Deine 2. Frage verstehe ich nicht ganz. Das ist doch eine normale Objektinstanzierung?
 
DaZpoon schrieb:
Habe ich das jetzt so verstanden: Die gestartete Konsolenanwendung entwickelst du selbst?[...]

Ja.

DaZpoon schrieb:
[...]das funktioniert über die EnumWindows-Funktion und vergleicht die PID des Fensterprozesses mit der des gestarteten.[...]

Nein, offensichtlich nicht.

DaZpoon schrieb:
[...]Das müsstest du jetzt mal probieren. Starte einfach deine Konsolenanwendung in der Konsolenanwendung nochmal (CreateProcess, natürlich einen Parameter übergeben dass keine Endlosschleife entsteht) und schau ob's klappt. Ist zwar auch Trick 17 mit anschleichen, ist aber noch halbwegs sauber.[...]

Ich denke das würde nicht funktionieren, weil der "geblockte" Prozess der Parentprozess wäre(?)

DaZpoon schrieb:
[...]Deine 2. Frage verstehe ich nicht ganz. Das ist doch eine normale Objektinstanzierung?

Um ehrlich zu sein, verstehe ich die Frage zu meiner Frage nicht.
 
Zuletzt bearbeitet:
Zurück
Oben