.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.
Ich hoffe diese kleine Spielerei hat euch gefallen, das Demo Projekt (diesmal in C#) gibts hier:
Demoprojekt: Download [VS 2008]
Sebastian Gross
http://www.bigbasti.comSebastian 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.
Author bigbasti87
Posted at 17:50 24. Februar 2010.
Bloggd: .NET: Windows Taskleiste verstecken – http://blog.bigbasti.com/net-windows-tas… #windows #csharp