Hamster-Event-Objekte

Zweck:

Hamster bietet ein "event-object" namens "evtHamster.IsIdle" an, das animiert ist, wenn keine Prozesse verarbeitet werden und nicht animiert ist, wenn gerade Aufgaben abgearbeitet werden (z.B. Purge - Bereinigen des Artikelbestandes, Abruf von News, usw.)
Nach Aufruf eines Befehls in Hamster kann dieses "event-object" verwendet werden, um das Ende aller laufenden Aufgaben abzuwarten. Der Vorteil liegt darin, daß ein laufendes Programm angehalten wird, (z.B. um den Prozessor nicht in Anspruch zu nehmen) bis die Aufgabe erledigt und das Objekt wieder animiert ist.
Hinweis: Verbindungen zwischen einem News- oder Mailreader zu lokalen Servern zählen hier nicht als laufende Prozesse.

Beispiele:

Perl

use Win32::Event;
$evtHamsterIsIdle = Win32::Event->open("evtHamster.IsIdle");
# start Hamster-tasks
$evtHamsterIsIdle->wait();

Visual Basic

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

Dim evtHamsterIsIdle As Long, res As Long
evtHamsterIsIdle = OpenEvent(SYNCHRONIZE, False, "evtHamster.IsIdle")
' start Hamster-tasks
res = WaitForSingleObject(evtHamsterIsIdle, INFINITE)
res = CloseHandle(evtHamsterIsIdle)

Delphi 3

uses Windows;
var evtHamsterIsIdle: THandle;
evtHamsterIsIdle := OpenEvent( SYNCHRONIZE, False, 'evtHamster.IsIdle' );
// start Hamster-tasks
WaitForSingleObject( evtHamsterIsIdle, INFINITE );
CloseHandle( hdlEvent );