Moin Leute.
Zum Loggen von Meldungen habe ich mit
Mit wird das Schließen-Kreuz oben rechts ge-disabled, so dass die Console über diesen Weg nicht geschlossen werden kann.
Nun wird aber die Console in der Taskbar angezeigt, und über das Kreuz dort kann sie geschlossen werden, was ich verhindern möchte, da mit dem Schließen der Console das Hauptfenster ebenfalls geschlossen wird.
Spoiler anzeigen
Weiß jemand von Euch, wie entweder dieses Schließen-Kreuz umgangen werden kann
oder
wie die Console aus der Taskbar rausgenommen werden kann, so was:
Zum Loggen von Meldungen habe ich mit
AllocConsole()
ein Console-Fenster an mein Programm angehängt, die mit Console.WriteLine("bla")
beschrieben wird.Mit wird das Schließen-Kreuz oben rechts ge-disabled, so dass die Console über diesen Weg nicht geschlossen werden kann.
Nun wird aber die Console in der Taskbar angezeigt, und über das Kreuz dort kann sie geschlossen werden, was ich verhindern möchte, da mit dem Schließen der Console das Hauptfenster ebenfalls geschlossen wird.
C#-Quellcode
- using System;
- using System.Windows.Forms;
- using System.Runtime.InteropServices;
- namespace AppendConsole
- {
- /// <summary>
- /// Klasse zum Aufruf und zur Positionierung der Console,
- /// das Close-Systemmenu wird ge-disabled.
- /// </summary>
- static class NativeMethods
- {
- private const int SWP_NOSIZE = 0x0001;
- private const int MF_BYCOMMAND = 0x00000000;
- private const int SC_CLOSE = 0xF060;
- private const int SC_MINIMIZE = 0xF020;
- private const int SC_MAXIMIZE = 0xF030;
- [DllImport("user32.dll")]
- public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);
- [DllImport("user32.dll")]
- private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
- [DllImport("kernel32.dll")]
- private static extern bool AllocConsole();
- [DllImport("user32.dll", EntryPoint = "SetWindowPos")]
- public static extern IntPtr SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
- [DllImport("kernel32.dll", SetLastError = true)]
- public static extern IntPtr GetConsoleWindow();
- internal static void ShowConsole()
- {
- NativeMethods.AllocConsole();
- IntPtr console = NativeMethods.GetConsoleWindow();
- IntPtr menu = NativeMethods.GetSystemMenu(console, false);
- NativeMethods.DeleteMenu(menu, NativeMethods.SC_CLOSE, NativeMethods.MF_BYCOMMAND);
- NativeMethods.DeleteMenu(menu, NativeMethods.SC_MINIMIZE, NativeMethods.MF_BYCOMMAND);
- NativeMethods.DeleteMenu(menu, NativeMethods.SC_MAXIMIZE, NativeMethods.MF_BYCOMMAND);
- int x = 1400; // unten rechts
- int y = 700;
- NativeMethods.SetWindowPos(console, IntPtr.Zero, x, y, 0, 0, NativeMethods.SWP_NOSIZE);
- }
- }
- }
Weiß jemand von Euch, wie entweder dieses Schließen-Kreuz umgangen werden kann
oder
wie die Console aus der Taskbar rausgenommen werden kann, so was:
Console.ShowInTaskbar = false;
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!