Feedback

VB - Taskbar ausblenden

Veröffentlicht von am 1/14/2007
(6 Bewertungen)
Um alle Einträge in der Taskleiste unsichtbar zu machen benötigt man zuerst einmal den Klassennamen des Taskbars. Dieser ist Shell_TrayWnd.

Hat man diesen, lässt sich dieses Fenster - mehr ist die Taskleiste nun mal nicht - per Befehl ein- oder ausblenden.

Im folgenden:

Die Klasse die den Fenstertitel bestimmt und die TrayLeiste ein und ausblendet und ein Anwendungsbeispiel.

Ein Programm verwendet 2 Buttons. Einen - btnHide - blendet die Trayleiste aus und speichert diese in der Registry. Startet das Programm beim nächsten mal, liest es die Registry aus, erkennt das die Taskleiste nicht sichtbar sein soll und blendet sie sofort aus.

Schützt vor neugierigen Usern ;-)

Der 2 Button - btnShow - blendet die Taskleiste wieder ein, und setzt den Registrywert ensprechend.

Der Wert wird in HKEY_Local_Machine geschrieben - dies sichert zu, dass ein einfacher User dies nicht verändern kann.

Sobald das Programm gestartet wird,
'Hier zunächst die entsprechende Klasse:
'Auf Wunsch kann noch eine Sicherheitsabfrage eingeblendet
'werden.

'Den auskemmentierten Messageboxblock wieder einbinden


Option Strict On
Option Explicit On

Imports Microsoft.VisualBasic

Public Class clsHideTaskbar

Private Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, _
                                                           ByVal lpWindowName As String) As Integer

Private Declare Auto Sub SetWindowPos Lib "User32" (ByVal hWnd As Integer, _
                                                        ByVal hWndInsertAfter As Integer, _
                                                        ByVal X As Integer, _
                                                        ByVal Y As Integer, _
                                                        ByVal cx As Integer, _
                                                        ByVal cy As Integer, _
                                                        ByVal wFlags As Integer)

Public Sub TaskBarVisible(ByVal Visible As Boolean)
        Dim Handle As Integer = FindWindow("Shell_TrayWnd", "")

        If Visible = True Then
            SetWindowPos(Handle, 0, 0, 0, 0, 0, 64)
            My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\Software\" & _
                                          My.Application.Info.CompanyName & "\" & _
                                          My.Application.Info.ProductName & "\Tray", "Visible", "True")


        Else
            '  If MessageBox.Show("You want to hide the Taskbar?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then

            SetWindowPos(Handle, 0, 0, 0, 0, 0, 128)

            My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\Software\" & _
                                          My.Application.Info.CompanyName & "\" & _
                                          My.Application.Info.ProductName & "\Tray", "Visible", "False")
            'End If
        End If
End Sub


End Class


'Hier der Aufruf, realisiert durch ein Formular.
'Darauf bitte 2 Command Buttons anordnen, 
'diese mit btnHide und btnShow benennen.

'Wird als Private declariert, damit die 
'Variablen über die ganze Form zugreifbar sind

Private cls As New clsHideTaskbar
Private keyValue As Boolean


Private Sub btnHide_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHide.Click
        cls.TaskBarVisible(False)
End Sub

Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click
        cls.TaskBarVisible(True)
End Sub


'Nun der Zugriff auf die Reg beim Prog-Start
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            keyValue = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\Software\" & _
                       My.Application.Info.CompanyName & "\" & _
                       My.Application.Info.ProductName & "\Tray", "Visible", "")

            If keyValue = False Then
                cls.TaskBarVisible(False)
            End If
        Catch ex As Exception
        End Try
End Sub
Abgelegt unter Taskbar, Tray, Shell_TrayWnd.

5 Kommentare zum Snippet

Tim Hartwig schrieb am 1/14/2007:
Diesen Snippet gibt es aber schon:
<a href="http://dotnet-snippets.de/dns/taskleiste-verstecken-SID331.aspx">
Taskleiste verstecken</a>
Volker Steitz schrieb am 1/15/2007:
Stimmt, hab´s auch gerade bemerkt.
Da hab ich nicht richtig recherchiert, ob jemand schon etwas ähnliches veröffentlicht hat. Sorry, Volker
Klaus Tillmann schrieb am 1/15/2007:
Find ich nicht schlimm. Der Code wurde ja auch um wesentliches ergänzt. Die Art und Weise wie
in der Reg. die Daten gespeichert und gelesen werden find' ich gut
Jochen schrieb am 9/25/2007:
Soso, tolle sachen. Was aber interessanter wäre und noch nicht hier ist: Task-Manger verstecken - kann das jemand?
Jakob schrieb am 2/12/2009:
Wie wendet man dieses "Snippet" an?
[Das einzigste was ich programmiere ist "Java"]
Viele Grüße Jakob
 

Logge dich ein, um hier zu kommentieren!