.NET: Windows Taskleiste verstecken
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]

Februar 24th, 2010
Bloggd: .NET: Windows Taskleiste verstecken – http://blog.bigbasti.com/net-windows-tas... #windows #csharp
via Twitoaster