Keinen Geburtstag mehr vergessen

Immer wieder vergessen Sie den Geburtstag eines Verwandten oder Freundes. Windows kann Sie auf Wunsch automatisch daran erinnern.

Viele Programme können die Aufgabe übernehmen, Sie an diverse Termine wie Geburtstage zu erinnern: Outlook ist nur ein Beispiel. Wenn Sie allerdings Outlook oder die diversen Alternativen nicht nutzen, kann sich auch der Windows Scripting Host (WSH) dieser Aufgabe widmen. Sie benötigen nur eine einfache Textdatei, in der Sie die Geburtstage vermerken, und ein kleines Programm in VBScript.

Die einzelnen Zeilen der Textdatei müssen einem bestimmten Aufbau folgen, wobei in jeder einzelnen Zeile genau ein Geburtstag steht. Gleich am Anfang der Zeile tragen Sie Tag und Monat des Geburtstages ein, jeweils gefolgt von einem Punkt. Diesen Angaben folgt der Name des Geburtstagskindes. Ein korrekter Eintrag wäre beispielsweise: »22.04. Peter Arnold«.

Speichern Sie die Datei unter dem Namen BIRTHDAY.INI im Ordner C:\DATEN. Das VBScript-Programm BIRTHDAY.VBS finden Sie im Kasten abgedruckt und auf der Heft-CD unter CHIP-Code BIRTHDAY. Sie können es mit jedem beliebigen Editor verfassen, zum Beispiel dem Windows Notepad.



Dim objFileSystem
Dim objFile
Dim objTextStream
Dim szConfigFile
Dim szBirthday, szName, szThisYear, szNextYear, szComparisonDate
Dim szMessage
Dim iTime
Dim iDifference

æ Standardwerte für einige Variablen
szConfigFile = äC:\DATEN\BIRTHDAY.INIô
iTime = 5
szMessage = äô
szThisYear = CStr(Year(date))
szNextYear = CStr(Year(date)+1)

Set objFileSystem = CreateObject(äScripting.FileSystemObjectô)

æ Config-Datei ermitteln, ...
If objFileSystem.FileExists(szConfigFile) Then

æ ... öffnen...
Set objFile = objFileSystem.OpenTextFile(szConfigFile)

æ ... und zeilenweise abarbeiten
Do until objFile.atEndOfStream

æ Geburtstag und Name des Geburtstagskindes lesen
szBirthday = objFile.read(6)
szName = objFile.readLine

æ Wieviele Tage sind es noch bis zum nächsten Geburtstag?
szComparisonDate = szBirthday & szThisYear
iDifference = DateDiff(äyô, date, DateValue(szComparisonDate))

æ Falls der nächste Geburtstag im nächsten Jahr liegt
if (CInt(iDifference) < 0) then
szComparisonDate = szBirthday & szNextYear
iDifference = DateDiff(äyô, date, DateValue(szComparisonDate))
end if
æ Wenn die Anzahl der Tage innerhalb der Frist liegt
if (CInt(iDifference) <= iTime) then
szMessage = szMessage & szName & ä am ä & szComparisonDate & ä - noch ä & iDifference & äTageô & Chr(10)
end if
Loop
objFile.close
else
MsgBox äDie Config-Datei ä & szConfigFile & ä ist nicht vorhanden!ô, vbCritical, äFehlerô
end if

æ Falls vorhaben, Liste der nächsten Geburtstage ausgeben
If szMessage<>ôä Then
MsgBox szMessage, vbInformation, äDie nächsten Geburtstageô
End If



Von besonderem Interesse sind hier die beiden Variablen »szConfigFile« und »iTime«, über die Sie das Programm konfigurieren. Die Variable »szConfigFile« enthält den Pfad sowie den Namen der Textdatei, in der Sie die Liste der Geburtstage verwalten. Bei der Variable »iTime« handelt es sich um die Anzahl der Tage, die Sie vor einem anstehenden Geburtstag erinnert werden möchten.
Damit Windows das Programm bei jedem Systemstart ausführt, müssen Sie zuletzt im Ordner »Autostart« eine Verknüpfung auf die Datei BIRTHDAY.VBS erzeugen. Sollte dann ein Bekannter Geburtstag haben, meldet sich Windows mit einer Meldung und dem Namen des Geburtstagskindes.