Der Windows Taskplaner (Aufgabenplanung) eignet sich hervorragend, um wiederkehrende Aufgaben an bestimmten Wochentagen und/oder zu bestimmten Uhrzeit auszuführen. Heute möchten wir Ihnen zeigen, wie man mittels VB6 eine Windows Aufgabe anlegen kann. Fügen Sie nachfolgenden Code in ein Modul ein: Option Explicit ' Wochentage Public Enum EnumDays Monday = 1 Tuesday = 2 Wednesday = 4 Thursday = 8 Friday = 16 Saturday = 32 Sunday = 64 EveryDay = 1 Or 2 Or 4 Or 8 Or 16 Or 32 Or 64 End Enum ' Erstellt einen neuen Task, der autom. zu der ' angegebenen Uhrzeit ausgeführt wird ' Der Task wird als SYSTEM-Task eingerichtet Public Function NTTaskCreate(ByVal sCmdLine As String, _ ByVal sTime As String, _ Optional ByVal RunRepeatly As Boolean = True, _ Optional ByVal DaysOfWeek As EnumDays = EnumDays.EveryDay, _ Optional ByVal DaysOfMonth As Long = 0, _ Optional ByVal Interactive As Boolean = False, _ Optional ByVal sComputer As String = ".") As Long Dim oWMI As Object Dim oTask As Object Dim nResult As Long Dim JobId As Long Dim vDate As Date ' Fehlerbehandlung aktivieren On Error GoTo ErrHandler ' Uhrzeit muss im Format YYYYMMDDHHMMSS.MMMMMM(+-)OOO übergeben werden ' wobei YYYYMMDD durch ******** ersetzt werden muss ' (+-)OOO ist der Offset zur UTC Zeitangabe vDate = Date$ & " " & sTime sTime = "********" & Format$(vDate, "hhnnss") & ".000000" & _ NTTaskTimeoffset() Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ sComputer & "\root\cimv2") Set oTask = oWMI.Get("Win32_ScheduledJob") nResult = oTask.Create(sCmdLine, sTime, RunRepeatly, DaysOfWeek, _ DaysOfMonth, Interactive, JobId) ' Objekte freigeben Set oTask = Nothing Set oWMI = Nothing NTTaskCreate = nResult On Error GoTo 0 Exit Function ErrHandler: ' Service wird nicht unterstützt NTTaskCreate = 1 End Function ' Hilfsfunktion ' Ermittelt die Zeit-Differenz zwischen UTC und lokaler Zeit Public Function NTTaskTimeoffset() As String Dim oList As Object Dim oTask As Object Dim sOffset As String ' Fehlerbehandlung On Error GoTo ErrHandler Set oList = GetObject( _ "winmgmts:{impersonationLevel=impersonate}").InstancesOf( _ "Win32_ComputerSystem") For Each oTask In oList sOffset = Format$(Val(Trim$(oTask.CurrentTimeZone)), "000") If Val(sOffset) > 0 Then sOffset = "+" & sOffset Exit For Next ' Objekt freigeben Set oList = Nothing On Error GoTo 0 NTTaskTimeoffset = sOffset Exit Function ErrHandler: NTTaskTimeoffset = "+000" Set oList = Nothing End Function Aufrufbeispiel: nResult = NTTaskCreate("D:\MyExe.exe backup", "20:40", True, _ EnumDays.Tuesday Or EnumDays.Thursday) If nResult <> 0 Then MsgBox "Fehler " & CStr(nResult) & vbCrLf & "Die Aufgabe konnte nicht erstellt werden!" End If Mögliche Rückgabewerte:
Hinweis: |