Hallo Leute,
wir haben ein umfangreiches Programm, bei dem Logausgaben in eine Console geschrieben werden.
Bedauerlich ist der Umstand, dass eine angehängte Console Herr über das anhängende Programm ist, da ein Beenden der Console das Hauptprogramm gnadenlos beendet.
Untersucht wurde das im Thread Angehängte Console soll nicht geschlossen werden können.
Falls in der
Probiert das aus, indem Ihr mit
Also ist es erforderlich, das Icon der Console aus der Taskbar zu entfernen.
Mit Hilfe von @Fakiz , @Gonger96 und PInvoke kam dabei folgende Lösung raus:
Aloo dann - Viel Spaß.
ConsoleDoNotClose.zip
wir haben ein umfangreiches Programm, bei dem Logausgaben in eine Console geschrieben werden.
Bedauerlich ist der Umstand, dass eine angehängte Console Herr über das anhängende Programm ist, da ein Beenden der Console das Hauptprogramm gnadenlos beendet.
Untersucht wurde das im Thread Angehängte Console soll nicht geschlossen werden können.
Falls in der
Form_Closing
des Hauptprogramms abgefragt wird, ob Daten zu speichern sind, wird das einfach übersprungen, der Code kommt nicht zur Ausführung.Probiert das aus, indem Ihr mit
NativeMethods.AllocConsole();
eine Console anhängt und in das Form_Closing
-Event eine MessageBox aufruft und dann die Console direkt schließt.- Der Schließen-Button (x) im Console-Fenster muss ge-disabled werden.
Dazu wird das System-Menü der Console gelöscht. Das wirkt sowohl auf den (x)-Button rechts als auch auf das Menü links in der Titelzeile der Console.
Damit das Fenster dsann schick aussieht, konvertieren wir es in ein ToolWindow, da verschwinden die Minimize- und Maximize-Button.
Also ist es erforderlich, das Icon der Console aus der Taskbar zu entfernen.
Mit Hilfe von @Fakiz , @Gonger96 und PInvoke kam dabei folgende Lösung raus:
- Es wird ein OLE-Interface
ITaskbarList
instanziiert und über dieses das Icon der Console in der TaskBar gelöscht.
Das ist übrigens derselbe Mechanismus wie beiForm.ShowInTaskBar
.
MainForm
- das Hauptfenster der Anwendung.
Es hat 3 Button:
Remove - Das Taskbar-Icon der Console wird gelöscht,
Write - Es wird ein Text in die Console geschrieben,
Clear - Das Console-Fenster wird gelöscht.
Das Console-Fenster folgt dem Hauptfenster beim Minimieren / Wiederherstellen.
NativeMethods
- eine Aufsammlung von API-Methoden und Konstanten, die gebraucht werden.
Es werden folgende Methoden zur allgemeinen Nutzung zur Verfügung gestellt:
AppendConsole() - Es wird eine Console an das Hauptprogramm angehängt.
RemoveConsoleFromTaskBar() - Das Icon der Console in der TaskBar wird entfernt.
ShowConsole(bool show) - Das Console-Fenster wird minimiert bzw. angezeigt.
ITaskbarList
- ein OLE-Interface
CoTaskbarList
- eine Implementierung desITaskbarList
-Interfaces.
Aloo dann - Viel Spaß.
ConsoleDoNotClose.zip
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!