Die Hamsterscripte


Die auf dieser Seite erklärten Scriptbefehle stellen nur einen Auszug der tatsächlich vorhandenen Befehle der Hamsterscriptsprache dar. Wer sich mehr mit dieser Scriptsprache befassen möchte, sollte dabei die sehr ausführliche Hilfe benutzen.

Die Scripte haben folgende Struktur:

#!hs2
Dies muß bei jedem Script, welches die neue Scriptsprache benutzt, in der ersten Zeile stehen.

#!load module.hsm
Lädt ein externes Modul, um dort enthaltene Scriptpassagen (Subroutinen) innerhalb eines Scripts nutzen zu können.

[...] Hier folgt dann das eigentliche Script.

 

Befehl Erklärung
Hamsterinterne Funktionen
HamVersion Gibt die momentan genutzte Version des Hamsters aus.
print( "Hamster Vr. " + HamVersion )
HamPath Gibt den Pfad des laufenden Hamsters zur Hamster.exe aus.
Läßt sich auch für Dateien unterhalb des Hamsterverzeichnisses verwenden.
if( FileExists( HamPath + "Mails\Mail.Out\*.msg" ) )
 print( "Es sind noch Mails zu senden" )
endif
HamMessage Ruft einige Funktionen aus dem Hamstermenü 'file' und 'local' auf.
1 Beendet den Hamster (file/exit)
2 Zurücksetzen von Counter und Log (file/clear counters+log)
3 0=stop, 1=start Starten/Stoppen des lokalen NNTP-Servers
4 0=stop, 1=start Starten/Stoppen des lokalen POP3-Servers
5 0=stop, 1=start Starten/Stoppen des lokalen SMTP-Servers
6 0=hide, 1=show Verstecken/Zeigen des Hauptfensters
7 0=hide, 1=show Verstecken/Zeigen des Tray-Icons
8 Stoppt alle aktiven Tasks
HamMessage( 2, 0 ) # Counter zurücksetzen
HamThreadCount Gibt die Anzahl der aktiven Tasks aus.
print( HamThreadCount )
HamIsIdle Abfrage, ob noch aktive Tasks vorhanden sind.
if( HamIsIdle )
 # mach was
endif
HamWaitIdle Wartet, bis alle aktiven Prozesse beendet sind und fährt erst dann mit der Bearbeitung des Scripts fort.
HamPurge Startet den "Purge-Prozeß", will heißen, daß im Datenbestand aufgeräumt wird. Mit einem Parameter dahinter kann festgelegt werden, bei welchen Daten aufgeräumt werden soll. (1 = Löscht nur im Artikelbestand, 2 = nur News-History-Einträge, 4 = nur Killfile-Log-Einträge, 8 = nur Mail-History-Einträge)
HamWaitIdle
HamPurge( 4 )
HamWaitIdle
HamRebuildGlobalLists Baut eine vom Hamster benötigt Liste neu auf, insbesondere die zum Abonnieren von Newsgroups benötigte alldescs.txt.
HamRebuildHistory Baut die History für Newsartikel neu auf, wobei die alte History gelöscht und die neue anhand der tatsächlich vorhandenen Artikel zusammengestellt wird. Hamster darf währenddessen keine weiteren Prozesse ausführen.
HamSetLogin Setzt temporär den Benutzer und sein Passwort für eine DFÜ-Verbindung oder einen Server (Mail oder News). Temporär heißt, daß diese Einstellungen nicht in einer Datei gespeichert werden, sondern nur im Speicher verbleiben, bis der Hamster wieder geschlossen wird. Wenn statt des Benutzers und/oder des Passwortes ein Fragezeichen ("?") gesetzt wird, fragt Hamster bei Bedarf nach dem notwendigem Eintrag. Auch hier können die Extra-Benutzer/Passwörter ("$1") benutzt werden. damit die Daten nicht offen lesbar in der Datei stehen.
HamSetLogin( "MyProvider", "MyUsername", "?" )
HamNewsJobsClear Löscht die Liste für anstehende News-Arbeiten.
HamNewsJobsPullDef Füllt die Job-Liste mit Einträgen für das Abholen von News. Eine Server-Auswahl ist hier möglich.
HamNewsJobsPullDef( "news.t-online.de,nntp;news.heise.de,nntp" )
HamNewsJobsPostDef Füllt die Job-Liste mit Einträgen für das Senden von News. Eine Server-Auswahl ist hier möglich.
HamNewsJobsPostDef( "news.t-online.de,nntp;news.heise.de,nntp" )
HamNewsJobsPull Füllt die Job-Liste mit Einträgen für das Abholen von News. Eine Auswahl nach Server und Newsgruppe ist hier möglich.
HamNewsJobsPull( "news.t-online.de", "^hamster\." )
HamNewsJobsPost Füllt die Job-Liste mit Einträgen für das Senden von News. Eine Auswahl nach Server, Newsgruppe und einem beliebigem Artikelheader ist hier möglich. Hinweis: Die angegebene Gruppe muß auch vom selben Server gepullt werden, wenn dorthin gepostet werden soll.
HamNewsJobsPost( "news.heise.de", "^ger\.", "^X-xxx: CT" )
HamNewsJobsStart Startet die Abarbeitung der vorher erstellten Job-Liste. Hier werden dann News abgeholt und gesendet.
HamNewsJobsClear
HamNewsJobsPostDef
HamNewsJobsPullDef
HamNewsJobsStart
HamMailExchange Startet das Abholen und Senden von Mails.
HamFetchMail Startet das Abholen von Mails, wobei mehrere Parameter dafür angegeben werden können. (Notwendig, wenn Mails in bestimmte lokale Postfächer einsortiert werden sollen oder verschiedene Passwörter für das Login nötig sind.)
HamFetchMail( <server>, <port>, <user>, <pass>, <destuser>, <filter>, <Del> )
HamFetchMail( "pop.t-online.de", "pop3", "", "", "", "" )
HamFetchMail( "pop.gmx.net", "pop3", "user", "pass", "Flo", "filter", "1" )
HamSendMail Startet das Senden von Mails, wobei auch der Server angegeben werden kann. Möglich ist auch, den Server nur zu nutzen, wenn eine bestimmte Mailadresse im Absender zutrifft.
HamSendMail( "mail.gmx.net", "smtp", "user@gmx\.net" )
HamSendMail( "mailto.t-online.de", "smtp" )
HamRasDial Baut eine DFÜ-Verbindung auf. Der Name der Verbindung muß angegeben sein und Benutzer&Passwort müssen im Hamster eingetragen sein oder per 'hamsetlogin' bzw. direkt angegeben werden. Von 'HamRasDial' geöffnete Verbindungen sollten mit 'HamRasHangup' geschlossen werden.
HamRasDial( "NameDerVerbindung" )
HamRasDial( "DFÜ-Name", "User", "Passwort" )
HamRasHangup Schließt eine geöffnete DFÜ-Verbindung.
Eingebaute externe Funktionen.
execute Startet externe Programme, die in der Klammer angegeben sind. Es können auch weitere Parameter übergeben werden. (Arbeitsverzeichnis, Darstellung und ob auf das Ausführungsende gewartet werden soll...)
execute( "notepad.exe changes.txt","",1,False )
print Gibt den enthaltenen Text aus. (schwarz auf weiß)
print( "And the answer is: " + $answer )
warning Macht das gleiche wie 'print', der Text ist allerdings gelb unterlegt und wirkt dadurch auffälliger.
warning( "Brain malfunction! No ideas left! Example halted!" )
MsgBox Bringt ein Popup-Fenster mit einer enthaltenen Nachricht und Buttons. Erscheinungsbild der Popup-Fenster kann sein: 0x40 (Information), 0x30 (Warnung), 0x20 (Frage), 0x10 (Fehler) Mögliche Buttons sind: 0x0 (OK), 0x1 (OK+Abbrechen), 0x2 (Abbrechen+Wiederholen+Ignorieren), 0x3 (Ja+Nein+Abbrechen), 0x4 (Ja+Nein), 0x5 (Wiederholen+Abbrechen)
Format: MsgBox( <text>, <caption>, <style> )
if( MsgBox( "Magst Du dumme Fragen?", "", 0x20|0x4 ) = 6 )
 Error( "Ach nee." )
else
 MsgBox( "Dann viel Spaß." )
endif
InputBox Bringt ein Eingabefenster mit dem entsprechenden Text. Der in diese Box eingegebene Text kann in Scripten weiter ausgewertet werden.
$answer = InputBox( "What's the answer ...?", "", "42", $ok )
ListBox Bringt ein Fenster mit Text, in dem aus einer vorgegebenen Liste ein Eintrag ausgewählt werden kann.
var( $list, $selindex )
$list = ListAlloc
ListAdd( $list, "41" )
ListAdd( $list, "42" )
ListAdd( $list, "43" )
$selindex = ListBox( $list, "What's the answer ...?" )
print( iif( $selindex=1, "Correct!", "Wrong!" ) )
ListFree( $list )
Zeitplansteuerung
AtClear Löscht alle Zeitplaneinträge.
AtAdd Fügt der Liste der Zeitplaneinträge einen neuen Eintrag hinzu. Syntax:
AtAdd( "Subroutine", "Z-von", "Z-bis", "Wochentage", "WDHLG", "sofort" )
-Subroutine: Scriptteil, der ausgeführt werden soll.
-Z-von/Z-bis: Startzeit/Endzeit des Zeitplans.
-Wochentage: Welche Wochentage der Eintrag aktiv sein soll. (Mo-So)
-WDHLG: Alle xx Minuten soll wiederholt werden.
-sofort: Startet sofort, ohne auf die genaue Wiederholungszeit zu achten.
AtClear
AtAdd( getmails, "00:00", "06:00", "1111100", 60, true )
AtAdd( getmails, "06:00", "18:00", "1111100", 15, true )
AtAdd( getmails, "18:00", "24:00", "1111100", 60, true )
AtAdd( getmails, "12:00", "", "0000011" )
AtAdd( getnews, "03:15" )
AtAdd( getnews, "18:45" )
AtExecute
quit

sub getmails
 HamMailExchange
endsub

sub getnews
 # ...
endsub
AtExecute Führt die Subroutinen der Einträge aus, die mit 'AtAdd' erstellt wurden.
DFÜ-Verbindungsaufbau (siehe auch HamRasDial und HamRasHangup)
RasGetConnection Zeigt den Namen der aktuell aufgebauten DFÜ-Verbindung an.
print( RasGetConnection )
RasIsConnected Sieht nach, ob gerade eine DFÜ-Verbindung besteht.
if( !RasIsConnected ) # Wenn keine Verbindung besteht,
 # hier dann die Einwahl einfügen.
endif
RasDial Baut eine DFÜ-Verbindung auf. Allerdings müssen hier Benutzer und Passwort im Klartext angegeben werden, da die im Hamster gesetzten Daten nicht berücksichtigt werden.
RasDial( "Provider", "Benutzername", "Passwort" )
RasHangup Schließt jede aktive DFÜ-Verbindung, egal ob sie vom Hamster aufgebaut wurde oder nicht.
Script-Behandlungsfunktionen.
quit Beendet ein laufendes Script.
error Beendet ein laufendes Script und gibt dabei eine Fehlermeldung aus. (rot)
error( "File ", $Filename, " not found!" )
assert Beendet ein laufendes Script und gibt dabei eine Fehlermeldung aus, wenn die Fehlervariable erfüllt worden ist.
assert( FileExists($Filename), "File ", $Filename, " not found!" )
var Wenn Variablen innerhalb eines Scripts verwendet werden sollen, muß diese Variable dem Script vorher mit 'var' bekannt gemacht werden.
var( $a, $b, $c )
varset Mit 'varset' kann dieser Variablen auch gleich ein bestimmter Wert zugeordnet werden.
VarSet( $a, 42 )
sleep Wartet mit der Ausführung des Scripts an dieser Stelle die angegebene Zahl von Millisekunden.
sleep( 60000 ) # 1 Minute
trace Es werden mit 'trace' alle Scriptzeilen im Hamsterlog dargestellt, während sie ausgeführt werden.
trace( 1 ) # Anschalten von 'trace'
 # ...
trace( 0 ) # Abschalten von 'trace'
dump Zeigt alle Variablen mit ihren derzeitigen Werten an.

Dann gibt es noch die Möglichkeit, große Scriptpassagen in Module auszulagern, damit das Hauptscript nicht zu groß wird. Auch können die Subroutinen in den Modulen durch mehrere Scripte genutzt werden. Ein Modul sieht etwas anders aus als ein normales Script und hat die Dateiendung '*.hsm':

############# Modul Beginn ####################

#!initialize
    debug( 255, "<<< module 'modul.hsm' >>>" )

# Hier die Definitition der globalen Variablen

return( 0 )

sub DeineProzedur($Parameter)

# Hier der Modulkern

endsub

############# Modul Ende ######################

Innerhalb eines Hamsterscripts wird das Modul mit '#!load modulname.hsm' geladen und kann anschließend mit 'DeineProzedur($Parameter) 'im Hauptscript benutzt werden.


Home Konfiguration Scriptarchiv/Tools Scriptsteuerung Hamsterscripte Einstellungen Bookmarks Newsfilter Mailfilter SPAM Tips&Tricks Fun Guestbook