11 Jul 2007

Time event on Windows Mobile with SNAPI

Vous avez besoin de remonter un évènement périodique sous Windows Mobile 5.0 ou 6, il existe une classe qui permet de le faire : SystemState class. Ainsi, vous pourrez émettre une alerte ou lancer une application à des dates et heures données.
You need to get a periodic event on Windows Mobile 5.0 or 6, there an interesting class to do this: SystemState class. Thus, you will be able to emit an alarm or to launch to an application to dates and hours given.

Tout d'abord, il suffit de créer un objet SystemState avec la property Time.
First of all, you need to create a SystemState object with the property Time.
SystemState _time = new SystemState(SystemProperty.Time);

Puis, s'accrocher à l'évènement Changed.
Then, add the Changed event to _time object.
_time.Changed += new ChangeEventHandler(_time_Changed);

Toutes les minutes, l'évènement est remonté. Ensuite dans le délégué, vous pouvez tester la valeur courante en la convertissant en DateTime:
Every minute, the event fired. Then in the delegate, you can test the current value by converting it into DateTime type:
void _time_Changed(object sender, ChangeEventArgs args)
{
// Obtenir la date courante
// Get the current Date Time
byte[] btTime = (byte[])SystemState.GetValue(SystemProperty.Time);
Int64 lngTime = BitConverter.ToInt64(btTime, 0);
DateTime time = DateTime.FromFileTime(lngTime);
// Ajouter le test sur la date que vous voulez !
// Add the test on the date you want !
}

J'ai essayé de mettre une condition pour l'évènement SystemState, mais ça ne fonctionne pas.
Voici le code réutilisable pour les autres propriétés pour lesquelles ça fonctionne:
I tried to put a condition for the SystemState event, but it doesn't work. Here is the reusable code for the others properties for which that works:
_time.ComparisonType = StatusComparisonType.Equal;
_time.ComparisonValue = TheValueToCompare;

J'espère que ça vous sera utile si vous avez besoin de faire un réveil ou pour une autre utilisation, n'hésitez pas à poster vos commentaires.
I hope that that will be useful for you if you need to make an alarm or for another use, don't hesitate to post your comments.

2 comments:

jfmathieu said...

Bonjour,
Très intéressant comme post. Merci

Je tente de me mettre au développement applicatif sur les Windows Mobile 6 mais l'installation du SDK ne fonctionne pas.

Vous pouvez voir mon "post-bug" sur http://www.jean-francoismathieu.com/blog/2007-07-09-problem-installing-wm6-sdk-on-vs2005-sp1/

Est-ce que vous avez une idée ?

Merci

Fabien Decret said...

Bonjour,

Merci, j'ai jeté un oeil sur votre blog il est intéressant aussi.
J'ai aussi regardé votre problème, et je ne comprends pas trop d'où vient le problème, je n'ai jamais eu ce genre de problème et sur le Net je n'ai rien trouvé. Moi j'ai un VS 2005 pro et pas de souci pour le SDK6. Avez-vous essayé de refaire une install de VS2005 Pro, c'est un peu violent mais je ne vois pas trop autre chose? Aviez-vous réussi à installer le SDK 5.0?
Avez-vous réussi à installer le CF2.0 SP2?
Désolé de ne pas pouvoir être plus précis mais je ne vois pas trop d'où peut venir le probème. Tenez moi au courant.
A bientôt
Fabien