|
|
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.
|