Technology Experience
.NET World

Intercettare l’evento PowerUp di un palmare

Probabilmente chi di voi sviluppa su Windows Mobile 5 o 6 può risolvere questo tipo di problema in modo diverso, magari con il meccanismo State and Notification Broker di cui ha parlato Mighell sull’ultimo numero di IoProgrammo.

Ma con Pocket PC 2003 certe cose non sono possibili. Il mio problema era questo (parlo al passato perchè ormai l’ho risolto): la mattina, quando riaccendevo il palmare dopo averlo spento la sera prima, la mia applicazione era ancora aperta, ma Windows si metteva in primo piano, facendo di fatto scomparire l’applicazione. Nel caso in cui si voglia creare un’applicazione blindata, questo comportamento non va bene. In pratica, si vuole evitare il più possibile che l’utente possa utilizzare l’interfaccia di Windows, fare operazioni non consentite e via dicendo. Per raggiungere questo obiettivo, abbiamo disabilitato gli hardware buttons del palmare (che richiamano le applicazioni standard come il calendario, la posta elettronica, etc.), abbiamo fatto uso di alcune API per spostare la barra Start al di fuori dello schermo e così via.

Rimaneva solo quel problema: capitava a volte, al risveglio del palmare dopo un lungo periodo, che l’applicazione finisse in secondo piano e lo schermo mostrava la schermata iniziale di Windows. Ci sono due soluzioni: o scrivete qualcosa in C++ oppure utilizzate lo OpenNETCF Smart Device Framework 2.1, come ho fatto io, che è disponibile qui.

Con questa libreria la soluzione è molto semplice:

public partial class MainForm : Form { public MainForm() { InitializeComponent(); PowerManagement.PowerUp += new DeviceNotification(PowerManagement_PowerUp); } void PowerManagement_PowerUp() { this.BringToFront(); MessageBox.Show("L'applicazione è stata risvegliata!"); } }

Nel costruttore del form mi sottoscrivo all’evento PowerUp, il cui event handler non fa altro che chiamare il metodo BringToFront() sulla form stessa, che quindi torna davanti a tutto. Piccola note: l’evento viene sollevata più di una volta – non ho ben capito la logica – perciò sconsiglierei di mettere MessageBox.Show() come ho fatto io qui sopra a scopo didattico. E’ bene utilizzare procedure non invasive per l’utente: la BringToFront() è una di queste, perchè se viene eseguita una o due volte ha poca importanza.

Technorati Tags:   

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.