Le premier site francophone dédié au développement Pocket PC


 
   

Comment programmer des notifications avec eVB ?

N'avez-vous jamais eu envie de déclencher l'exécution de votre programme eVB sur un événement ? Le système d'exploitation possède cette possibilité, mais pour utiliser ces fonctions il faut créer une structure, chose impossible en eVB (il existe bien une méthode, mais c'est pas simple).

Perso, j'utilise la technique de notification pour effectuer une serie de mesures par RS. Mon application de réveille toutes les 2h30, effectue ses mesures (durée 30 secondes) et se reprogramme un nouveau réveil sur 2h30 plus tard puis quitte. La fonction de mise en veille auto rendort le Pocket PC au bout de 3 minutes. Très pratique donc.

Nous avons donc créé une DLL pour eVB qui permet de déclencher un programme sur 3 événements :

A une date et heure données
Au démarrage du Pocket PC
Au changement d'heure (réglage)

VBNotify.dll (c'est son nom) doit être copiée dans le dossier \Windows de votre Pocket PC. Elle exporte 5 fonctions :

ExecuteAppAtTime

Cette fonction permet de lancer un programme (chemin complet dans le premier paramètre) à un instant donné. Le moment du lancement est défini par les 6 paramètres suivants, qui sont l'année, le mois, le jour, l'heure, les minutes, et les secondes.

Si vous voulez lancer le programme "\Windows\Essai.vb" le 15/07/2001 à 15:30:00 vous devez executer la ligne de code suivante :

Call ExecuteAppAtTime("\Windows\Essai.vb",2001,7,15,15,30,0)

Cette fonction est déclarée dans eVB de la manière suivante :

Public Declare Function ExecuteAppAtTime Lib "VBNotify" (ByVal wApplicationFilename As String, ByVal wYear As Integer, ByVal wMonth As Integer, ByVal wDay As Integer, ByVal wHour As Integer, ByVal wMinute As Integer, ByVal wSecond As Integer) As Boolean

StopExecuteAppAtTime

Si avant l'échéance vous souhaitez arrêter la notification d'un programme, il faut utiliser cette fonction avec comme simple paramètre le nom du programme. Ceci nous indique qu'il ne peut y avoir qu'une notification par programme.

Cette fonction est déclarée dans eVB de la manière suivante :

Public Declare Function StopExecuteAppAtTime Lib "VBNotify" (Byval wApplicationName as String)

ExecuteAppOnWakeUp

Il faut utiliser cette fonction pour indiquer au système qu'il doit exécuter un programme à chaque mise sous tension. Le programme est stipulé en paramètre (le chemin complet)

Cette fonction est déclarée dans eVB de la manière suivante :

Public Declare Function ExecuteAppOnWakeUp Lib "VBNotify" (ByVal wApplicationFilename As String) As Boolean


ExecuteAppOnTimeChange

Cette fonction indique au système qu'il faut exécuter un programme passé en paramètre à chaque changement (réglage) de l'heure système.

Cette fonction est déclarée dans eVB de la manière suivante :

Public Declare Function ExecuteAppOnTimeChange Lib "VBNotify" (ByVal wApplicationFilename As String) As Boolean

StopExecuteAppOnEvent

Si vous voulez stopper la notification sur événement d'un programme, vous devez utiliser cette fonction, qui ne prend comme paramètre que le programme concerné. Attention tout de même, vous devez ecrire EXACTEMENT la même chaine que lors de l'appel à ExecuteAppOnWakeUp et ExecuteAppOnTimeChange car "\Windows\Toto.vb" c'est pas la même chose que "\windows\toto.vb" pour le système de notification (zarbi !)

Cette fonction est déclarée dans eVB de la manière suivante :

Public Declare Function StopExecuteAppOnEvent Lib "VBNotify" (ByVal wApplicationFilename As String) As Boolean

 

Vous trouverez ci-dessous les sources en eVC de cette DLL, la DLL pour ARM (si vous souhaitez les autres formats faites le nous savoir sur le forum).

Sources eVC++ de cette DLL

VBNotify.dll (version ARM pour iPAQ), à placer dans le dossier Windows.

 

Voilà, avec cette DLL vous pouvez maintenant écrire des programmes qui se réveillent tout seuls.

 

Stéphane Sibué

 

 
       
   
 
   
Copyright 2001-2004 - Tous droits réservés
 
   

iPAQ est un produit de COMPAQ.
Visual Tools est un produit de Microsoft Corporation.
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.