Dienstag, 25. Mai 2010

Anwendung nicht als Task sondern als Prozess anzeigen

Damit eine C# Anwendung vom Betriebssystem nicht als Task, sondern als Prozess betrachtet werden soll, genügt es einfach, die Anwendung zu "verstecken", d.h. unsichtbar zu machen.
Betrachten wir eine Windows-Forms Anwendung als Beispiel. Setzen wir die Eigenschaft Visible des Formulars auf false, z.B. mittels
this.Visible = false;
(mit this ist immer das aktuelle Formular gemeint), wird das aktuelle Formular unsichtbar und demzufolge im Taskmanager nur noch als Prozess angezeigt.
Im laufenden Betrieb, z.B. nach Klicken eines Buttons kann dieser Code problemlos ausgeführt werden.
Etwas schwieriger gestaltet sich die Sache jedoch, wenn das Formular direkt beim Start unsichtbar gemacht werden soll.
In Form1_Load zeigt der Code keine Wirkung, da nach dieser Funktion Show() des Formulars aufgerufen wird und das Formular somit wieder eingeblendet wird.
Die meiner Meinung nach beste Methode besteht im Überschreiben der Funktion void OnShown(EventArgs e) des Formulars, welche beim Aufruf von Show() aufgerufen wird.
Die vollständige Deklaration der Funktion lautet:
protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    this.Visible = false;
}
base.OnShown(e); fügt der Compilter automatisch hinzu, diese Zeile sorgt dafür, dass die Funktion OnShown() der Vaterklasse von Form aufgerufen wird.
Natürlich habe ich die 2. Zeile, this.Visible = false;, eingefügt, womit das Formular von Anfang an und dauerhaft unsichtbar wird.

Kommentare:

  1. Bei deiner Methode blitzt das Fenster für den Bruchteil einer Sekunde auf.

    Hier mal noch eine andere funktionierende Möglichkeit. Code einfach in den Konstruktor einfügen!

    this.ShowInTaskbar = false;
    this.Opacity = 0;

    AntwortenLöschen
  2. Vielen Dank ;]

    Das hat perfekt geholfen !

    AntwortenLöschen