BigBastis Blog

.NET: Windows Taskleiste verstecken

Introduction

user

Sebastian Gross

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.NET

.NET: Windows Taskleiste verstecken

Posted on .

In den letzten Tagen ist mir durch einen Zufall aufgefallen, dass die Windows Taskleiste (seit Windows Vista) in einem Fenster Prozess des Explorers läuft.

Das interessante/lustige hierbei ist, dass die Taskleiste als Fenster erkannt wird und dementsprechend auch als Fenster behandelt werden kann. Also können wir sämtliche Funktionen für Fenster auch auf die Taskleiste anwenden.

Als Beispiel blende ich hier die Taskleiste mit Hilfe der ShowWindow Funktion aus. Das lustige hierbei, ist dass nicht die Ganze Taskleiste von dieser Aktion betroffen ist. Der „Start“-Knopf von Windows bleibt weiterhin sichtbar und funktioniert, nur das Drumherum ist nun verschwunden.

Der Prozess den wir suchen läuft als „explorer“ und sollte der einzige Prozess sein, der ein MainWindowHandle hat aber keinen MainWindowTitle. Wenn man diese zwei Kriterien anwendet, kann man ganz einfach diesen Prozess isolieren:

        [DllImport("user32.dll")]
        public static extern long ShowWindow(IntPtr hWnd, int nCmdShow);

        private IntPtr tbHandle = IntPtr.Zero;
        private void button1_Click(object sender, EventArgs e)
        {
            Process[] pr = Process.GetProcesses();

            foreach (Process p in pr)
            {
                if (p.MainWindowHandle != null && p.MainWindowTitle == ""
                    && p.ProcessName == "explorer")
                {
                    tbHandle = p.MainWindowHandle;
                }
            }

            if (tbHandle != IntPtr.Zero)
            {
                ShowWindow(tbHandle, 0);
            }
            else
            {
                MessageBox.Show(this, "Konnte Prozess nicht finden!",
                "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

Da man nun das MainWindowHandle hat kann man nun mit Hilfe der ShowWindow-Funktion aus der Win32 API das Fenster verstecken.

WICHTIG: Bitte vor dem Verstecken der Taskleiste unbedingt das MainWindowHandle abspeichern, da man diese sonst nicht wieder einblenden kann!

Wenn man die Aktion erfolgreich ausführt sieht man folgendes:

Bild 1: Die Taskleiste ist verschwunden, nur der Start-Knopf ist noch da

Wie man sieht ist nur noch der Start-Knopf da und die gesamte Taskleiste ist verschwunden und ist auch nicht anklickbar!

Wenn man die Option „Taskleiste Automatisch ausblenden“ aktiviert hat hat man sogar einen noch schöneren Effekt!

Also wenn ihr nicht wollt, dass euch jemand auf die Taskleiste glotzt oder ihr jemandem einen kleinen Streich spielen wollt könnt ihr das ja mal testen!

Falls ihr eure Taskleiste versteckt habt und aus versehen das Programm beendet könnt ihr die Taskleiste nicht mehr über das Programm wiederherstellen! Die einzige Lösung ist es im Taskmanager ([STRG]+[SHIFT]+[ESC]) den Prozess „explorer.exe“ zu beenden und dann über Datei->Neuer Task->“explorer“->[ENTER] den Explorer neu zustarten.

Bild 2: Das Demoprogramm

Ich hoffe diese kleine Spielerei hat euch gefallen, das Demo Projekt (diesmal in C#) gibts hier:

Demoprojekt: Download [VS 2008]

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.

Comments
user

Author bigbasti87

Posted at 17:50 24. Februar 2010.

Bloggd: .NET: Windows Taskleiste verstecken – http://blog.bigbasti.com/net-windows-tas… #windows #csharp

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (1) ...
Navigation