Entscheiden, ob Console oder Dialog angezeigt wird



  • Hallo zusammen,

    ich habe ein Programm geschrieben, welches je nach Commandozeilenargument
    in der Console abläuft bzw. per Dialog seine Arbeit verrichtet.

    Da ich aus dem Dialog heraus anscheinend keine Console erzeugen kann (ich habe noch nichts gefunden), habe ich das Projekt als Consolenapplikation kompiliert und starte nun, falls erforderlich den Dialog.

    Nachteil dieser Methode ist, das im Dialog das Consolenfenster auch geöffnet bleibt und auch in der Taskleiste zu sehen ist.

    Hat jemand von euch eine Idee, wie ich dieses Konsolenfenster zum schliessen bewegen kann?

    Meine erste Idee war, den Dialog in einen eigenen Thread zu stecken und dann den Thread der Console zu beenden. Hierzu müsste ich wohl dafür sorgen, das der neu kreierte Thread für den Dialog der Main-Thread der Applikation wird, damit ich den alten Consolen-Thread beenden kann, ohne das sich das ganze Programm beendet.

    Danke und Gruss
    Thomas



  • C-Thomas.NET schrieb:

    Da ich aus dem Dialog heraus anscheinend keine Console erzeugen kann (ich habe noch nichts gefunden)...

    Du könntest mit ProcessStartInfo aus deinem Dialog eine Console Anwendung starten. Was macht dein Programm, dass du zwischen Dialog und Console unterscheiden willst?

    [MSDN: ProcessStartInfo Class]
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessstartinfoclasstopic.asp

    ProcessStartInfo psi = new ProcessStartInfo("MyConsoleApp.exe");
    psi.WindowStyle = ProcessWindowStyle.Hidden;
    psi.CreateNoWindow = true;
    psi.RedirectStandardOutput = true;
    psi.UseShellExecute = false;

    Grüsse - Kalle



  • Du könntest mit ProcessStartInfo aus deinem Dialog eine Console Anwendung starten. Was macht dein Programm, dass du zwischen Dialog und Console unterscheiden willst?

    [MSDN: ProcessStartInfo Class]
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessstartinfoclasstopic.asp

    ProcessStartInfo psi = new ProcessStartInfo("MyConsoleApp.exe");
    psi.WindowStyle = ProcessWindowStyle.Hidden;
    psi.CreateNoWindow = true;
    psi.RedirectStandardOutput = true;
    psi.UseShellExecute = false;

    Grüsse - Kalle

    Vielen Dank,
    ich habe nach langem Suchen die Antwort in der WIN32-API gefunden. FreeConsole aus Kernel32.dll befreit den Rest des Programms von der Console.
    Das finde ich richtig nützlich und frage mich, warum nicht die vollständige WIN32-Konsolen-API in die .NET-API übernommen wurde.

    Gruss
    Thomas


Anmelden zum Antworten