Reagieren auf Ereignisse
Unter eVB hat man ohne den Einsatz von API-Funktionen keine Möglichkeit auf Geräte-Ereignisse wie Ein- oder Ausschalten, Syncronisationserfolg, Netzwerkverbindungsstatus u.s.w. zu reagieren. Eine Möglichkeit besteht in der Nutzung der Core-DLL-Funktion "CeRunAppAtEvent", die Applikationen bei Eintreffen eines bestimmten Ereignisses starten kann:
Deklarationsteil:
| Public
Const NOTIFICATION_EVENT_NONE = 0 Public Const NOTIFICATION_EVENT_TIME_CHANGE = 1 Public Const NOTIFICATION_EVENT_SYNC_END = 2 Public Const NOTIFICATION_EVENT_ON_AC_POWER = 3 Public Const NOTIFICATION_EVENT_OFF_AC_POWER = 4 Public Const NOTIFICATION_EVENT_NET_CONNECT = 5 Public Const NOTIFICATION_EVENT_NET_DISCONNECT = 6 Public Const NOTIFICATION_EVENT_DEVICE_CHANGE = 7 Public Const NOTIFICATION_EVENT_IR_DISCOVERED = 8 Public Const NOTIFICATION_EVENT_RS232_DETECTED = 9 Public Const NOTIFICATION_EVENT_RESTORE_END = 10 Public Const NOTIFICATION_EVENT_WAKEUP = 11 Public Const NOTIFICATION_EVENT_TZ_CHANGE = 12 Public Declare Function CeRunAppAtEvent Lib "Coredll" (ByVal AppName As String, ByVal WhichEvent As Long) As Long |
Da Diese Funktion ausschließlich Programme ausführen kann, ist eine Interaktion mit einem laufenden Programm nicht so einfach. Eine Möglichkeit besteht in dem Setzen eines Registry-Schlüssels (durch das mittels CeRunAppAtEvent gestartete "Mini"-Programm), der durch ein laufendes Programm im Polling (z.B. durch einen Timer) ausgewert und dann zurückgesetzt wird.
Eine einmal vereinbarte Benachrichtigung kann durch erneutes Aufrufen der Funktion mit der Konstante "NOTIFICATION_EVENT_NONE" zurückgesetzt werden.