Bloccare la taskbar in windows Mobile tramite il Compact framework 2.0

In questo articolo viene illustrata una tecnica di come in ambiente mobile tramite Visual Basic Net e C#, possiamo bloccare la taskbar di Windows Mobile.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In ambiente mobile,  può tornare utile bloccare la taskbar di windows mobile, in questo articolo vedremo come abilitarla e disabilitarla, tramite l’utilizzo delle api di Windows mobile 5.0.

La taskbar, è la barra posta nella parte superiore del device, quella in cui si trova la scritta start, in cui compare il menu per l’avvio dei programmi.

 

Creazione del progetto.

Dopo aver aperto visual studio 2005, si crea un nuovo progetto smart device di tipo device application.

Nella form inseriamo 2 pulsanti, uno avrà il compito di bloccare la taskbar, l’altra avrà il compito di abilitarla, il tutto come mostrato in figura 1.

Figura 1

 

Stesura del codice.

Terminata la fase di creazione della nostra finestra, si passa in visualizzazione codice.

Utilizziamo come spazio dei nomi system.runtime.interopservices per la gestione delle api di Windows mobile, di seguito si riporta il frammento di codice di tale dichiarazione.

VB.Net

Imports System.Runtime.InteropServices

C#

using System.Runtime.InteropServices;

Ora a livello di form, inseriamo la dichiarazione delle api, in particolare la funzione findwindow e enable, che rispettivamente ci permettono di spostarci sulla finestra che stiamo cercando e di abilitarla o disabilitarla. Queste funzioni di api, si trovano nella dll coredll.dll.

Di seguito si riportano le suddette dichiarazione.

 

VB.Net

'dichiarazione di api

    "coredll.dll", EntryPoint:="FindWindow")> _

    Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr

    End Function

    "coredll.dll", EntryPoint:="EnableWindow")> _

    Private Shared Function EnableWindow(ByVal hwnd As IntPtr, ByVal bEnable As Boolean) As Boolean

    End Function

C#

//dichiarazione di api

        [DllImport("coredll.dll", EntryPoint = "FindWindow")]

        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("coredll.dll", EntryPoint = "EnableWindow")]

        private static extern bool EnableWindow(IntPtr hwnd, bool bEnable);

Ora non ci resta che creare le funzioni per il blocco e sblocco della barra. Utilizzando la funzione findwindow, rintracciamo la “finestra” relativa alla barra, passandogli come valore il nome di tale classe mentre con la funzione enablewindow abilitiamo o disabilitiamo tale finestra.

Di seguito si riporta la funzione per il bloccaggio della barra.

 

VB.Net

'funzione che disabilita la taskbar

    Private Function Blocca() As Boolean

        Dim hwnd As IntPtr = FindWindow("HHTaskBar", Nothing)

        If Not hwnd.Equals(IntPtr.Zero) Then

            Return EnableWindow(hwnd, False)

        End If

        Return True

    End Function

C#

  //funzione che disabilita la taskbar

        private bool Blocca()

        {

            IntPtr hwnd = FindWindow("HHTaskBar", null);

            if (!hwnd.Equals(IntPtr.Zero))

            {

                return EnableWindow(hwnd, false);

            }

            return true;

        }

 

Mentre per la funzione che permette lo sblocco, ossia abilitare la taskbar, dobbiamo passare  al secondo parametro della funzione enablewindows il valore true.

Di seguito si riporta il frammento di codice della funzione per lo sblocco della taskbar.

 

 

VB.Net

'funzione che abilita la taskbar

    Private Function Sblocca() As Boolean

        Dim hwnd As IntPtr = FindWindow("HHTaskBar", Nothing)

        If Not hwnd.Equals(IntPtr.Zero) Then

            Return EnableWindow(hwnd, True)

        End If

        Return True

    End Function

C#

//funzione che abilita la taskbar

        private bool Sblocca()

        {

            IntPtr hwnd = FindWindow("HHTaskBar", null);

            if (!hwnd.Equals(IntPtr.Zero))

            {

                return EnableWindow(hwnd, true );

            }

            return true;

        }

 

 

Ora che abbiamo creato le funzioni per il blocco e sblocca della taskbar, le possiamo richiamare dai pulsanti, inseriti precedentemente nella form. Ecco qui di seguito, il codice per richiamare tale funzioni negli eventi click dei pulsanti.

 

 

VB.Net

Private Sub BtnBlocca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBlocca.Click

        Blocca()

        MessageBox.Show("TaskBar Bloccata")

    End Sub

    Private Sub BtnSblocca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSblocca.Click

        Sblocca()

        MessageBox.Show("TaskBar Sbloccata")

    End Sub

C#

private void BtnBlocca_Click(object sender, EventArgs e)

        {

            Blocca();

            MessageBox.Show("TaskBar bloccata");

        }

private void BtnSblocca_Click(object sender, EventArgs e)

        {

            Sblocca();

            MessageBox.Show("TaskBar sbloccato");

        }

 

 

Conclusioni.

Si è visto, come dotare nelle nostre applicazioni device, la possibilità di bloccare la barra di avvio di windows mobile, molto utile, nel quale si vuole creare programmi, in cui l’utente può utilizzare solo la finestra che si sta utilizzando.

Tramite la parola dowload, è possibile scaricare il file di esempio utilizzato in questo articolo.

Download