ToDo: Kontrolle

Hamster-Event-Objekte (Win32)

Der Hamster unterstützt „Event-Objekte“. Man kann diese Objekte z. B. für Programme und Skripte benutzen, welche Artikel und E-Mails nach dem Download nachbearbeiten.

Ein Event setzt sich jeweils aus dem Mutex und dem eigentlichen Eventnamen zusammen:

Mutex+"<Eventname>">

Siehe auch die Erläuterungen zu den Hamster-Mutex-Objekten.

Folgende Events werden unterstützt:

<Eventname> Bedeutung
evtHamster.IsIdle Signalisiert, dass keine Prozesse im Hamster aktiv sind und der Hamster unbeschäftigt (idle) ist, siehe auch Hinweis.
evtHamster.StopScript Signalisiert, dass ein Abbruch der Skript-Bearbeitung gefordert wird.
_main Globales Ereignis, das von der Existenz des Hamsters kündet.
_mailin Eine E-Mail wurde vom Remote-Server empfangen.
_mailout Eine E-Mail mit externem Ziel wurde vom lokalen Server empfangen.
_mailinternal Eine E-Mail mit internem Ziel wurde vom lokalen Server empfangen.
_newsout Ein Artikel wurde vom lokalen Server empfangen.
_rasconnected Eine RAS-Verbindung ist aufgebaut worden.
_rashangup Eine RAS-Verbindung wurde getrennt.
_purge Der Hamster putzt sich.

Hinweis: Verbindungen zu den lokalen Servern werden nicht als aktiver Auftrag betrachtet.

Beispiele für die praktische Nutzung:

Perl:

use Win32::Event;
# Pfad und Name des Hamsters: C:\Programme\Online\Hamster\hamster.exe
$mutex = "mutexHamster.App.c__programme_online_hamster_hamster_exe";
$evtHamsterIsIdle = Win32::Event->open($mutex."evtHamster.IsIdle") or die "Zugriff auf Event fehlgeschlagen: $!\n";
# Start Hamster-Tasks
$evtHamsterIsIdle->wait();

Delphi:

uses windows;
var evtHamsterIsIdle: THandle;
// Pfad und Name des Hamsters: C:\Programme\Online\Hamster\hamster.exe
const Mutex = 'mutexHamster.App.c__programme_online_hamster_hamster_exe';
evtHamsterIsIdle := OpenEvent(SYNCHRONIZE, False, Mutex+'evtHamster.IsIdle');
// Start Hamster-Tasks
WaitForSingleObject(evtHamsterIsIdle, INFINITE);
CloseHandle(evtHamsterIsIdle);

Visual Basic Classic:

Private Const INFINITE = &HFFFF
Private Const SYNCHRONIZE = &H100000
Private Declare Function OpenEvent Lib "kernel32" Alias "OpenEventA" _
        (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
        ByVal lpName As String) As Long 
Private Declare Function WaitForSingleObject Lib "kernel32" _
        (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
        (ByVal hObject As Long) As Long

' Pfad und Name des Hamsters: C:\Programme\Online\Hamster\hamster.exe
Private Const Mutex ="mutexHamster.App.c__programme_online_hamster_hamster_exe"
Dim evtHamsterIsIdle As Long, res As Long
evtHamsterIsIdle = OpenEvent(SYNCHRONIZE, False, Mutex+"evtHamster.IsIdle")
' Start Hamster-Tasks
res = WaitForSingleObject(evtHamsterIsIdle, INFINITE)
res = CloseHandle(evtHamsterIsIdle)