sabato 11 ottobre 2008

Bloccare la taskbar in windows Mobile tramite il Compact framework 2.0 (VB.Net e C#)

Riporto un articolo scritto per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/art_bloccare-la-taskbar-in-windows-mobile-tr_133.aspx


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

Nessun commento: