Home Page Home Page Tips & Tricks Come nascondere la barra degli strumenti con VB.NET ?

Come nascondere la barra degli strumenti con VB.NET ?


Il .NET Framework ci ha abituato troppo bene perchè il set di classi è molto ricco e copre ("wrappa") molte delle funzionalità e quindi delle API del Sistema Operativo. Tutte queste classi del Framework sono costruite sulla struttura precedente del sistema (built on top).
Qualcosa però è rimasto fuori. Chi programma in Visual C++ sa cosa vuol dire. Con Visual C++ infatti si hanno a disposizione tutti gli header files (.h) e si può accedere virtualmente a tutte le funzionalità di Windows dalle più semplici alle più complesse.

Gli ingegneri di Microsoft però hanno pensato a tutto e hanno dato a noi sviluppatori la possibilità di creare interoperabilità fra .NET e Win32 quindi il vecchio sistema di API unmanaged. Ma a cosa ci può servire l'interoperabilità ?
Ci può servire appunto per richiamare oggetti COM sviluppati in altri linguaggi oppure più banalmente chiamare funzioni API non incluse nel Framework.

Vediamo quindi qui di seguito com'è possibile con .NET nascondere o visualizzare la barra degli strumenti di Windows. Quello che ci serve innazitutto è definire e importare le due API di base che sono FindWindow e ShowWindow.

La prima delle due ci serve per recuperare l'Handle della finestra e la seconda per visualizzare o nasconderla. Ricordiamo che anche la barra degli strumenti di Windows è una finestra come tutte le altre.

Utilizziamo in linguaggio VB.NET per realizzare il nostro esempio pratico.
Importiamo quindi le due funzioni:

Codice .NET n°1
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Long) As Long

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


Sono necessarie anche due costanti:

Codice .NET n°2
Public Const SW_HIDE = 0
Public Const SW_SHOW = 5


Ed ora passiamo al codice. Prima quello per nascondere la Barra:

VB.NET
Codice .NET n°3
Dim lngHandle As Long
lngHandle = FindWindow("Shell_TrayWnd", "")
ShowWindow(lngHandle, SW_HIDE)




e poi il codice per farla riapparire:

VB.NET
Codice .NET n°4
Dim lngHandle As Long
lngHandle = FindWindow("Shell_TrayWnd", "")
ShowWindow(lngHandle, SW_SHOW)




Il codice è molto simile, cambia solo il secondo parametro della funzione ShowWindow. E' molto semplice capire che un parametro significa finestra nascosto e l'altro finestra visibile.

Alla funzione FindWindow invece abbiamo passato il nome della classe della finestra, Shell_TrayWnd. Se volete ripetere l'esperimento con altre finestre ciò è possibile. Se avete bisogno di sapere che nome ha la classe della finestra potete usare un famoso strumento contenuto in Visual Studio chiamato Spy++.
Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5