Moin Mr.Payne,
DaysOfMonth ist eine Bitfeld, dass heisst:
Jedes Bit des DWORD hat, allgemein ausgedrückt, eine eigene Bedeutung.
Im konkreten Fall steht hier jedes Bit (von rechts begonnen) für den Tag des Monats (1. bis 31.) an dem der Job gestartet werden soll.
Beispiel:
Du übergibst hier 5. Binär also 0000 0000 0000 0000 0000 0000 0000 1001 (32 Bit, da DWORD)
=> Der Job wird am 1. und 4. eines jeden Monats ausgeführt.
Analog gilt dies auch für DayOfWeek, wobei hier Bit 0 für Montag steht, Bit 1 für Dienstag usw.
Beispiel:
Du übergibst hier 7. Binär also 0000 1011 (8 Bit, da Char)
=> Der Job wird am Montag, Dienstag und Donnerstag gestartet.
Um jetzt zu ermitteln, welchen Wert Du übergeben musst, kannst Du so vorgehen:
DaysOfMonth := (2 shl (NummerDesErstenTages-1)) or (2 shl (NummerDesZweitenTages-1)) or ...
Das geht natürlich auch in einer Schleife, so dass die Gesamtzahl der Tage nicht festgeschrieben werden muss.
Den ersten Tag direkt zuweisen, die übrigen mit or ergänzen.
Für DaysOfWeek gilt dies analog. Wenn Du hier Montag den Wert 0 (Sonntag = 6) zuordnest, kannst Du Dir jeweils das -1 sparen.
Wird bei den beiden Werten 0 angegeben, so wird der Job nur einmal, bei ersten Auftreten von JobTime, gestartet.
Die Flags sollten in
AT_INFO erklärt sein (ggf. über
NetScheduleJobAdd zu erreichen)
Um mehrere Flags zu kombinieren muss auch or verwendet werden.