Vor ein paar Tagen haben wir Ihnen einen Code vorgestellt, mit dem sich eigene Windows-Aufgaben im Windows-Taskplaner (Aufgabenplanung) erstellen lassen: Heute zeigen wir, wie man prüft, ob eine bestimmte Windows-Aufgabe (AT-Task) bereits existiert, damit diese nicht "aus Versehen" zweimal erstellt wird. Fügen Sie nachfolgenden Code in ein Modul ein: ' Prüft, ob der angegebene Task in der ' Task-Planung von Windows existiert ' ' Geprüft wird hierbei nach dem Aufruf-Paramter (CommandLine) Public Function NTTaskExists(ByVal sCmdLine As String, _ Optional ByVal sComputer As String = ".") As Boolean Dim oList As Object Dim oTask As Object ' Fehlerbehandlung On Error GoTo ErrHandler ' alle AT-Tasks durchlaufen Set oList = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ sComputer & "\root\cimv2").InstancesOf("Win32_ScheduledJob") For Each oTask In oList If LCase$(oTask.Command) = LCase$(sCmdLine) Then NTTaskExists = True End If Next ' Objekte freigeben Set oTask = Nothing Set oList = Nothing On Error GoTo 0 Exit Function ErrHandler: Set oTask = Nothing Set oList = Nothing End Function Aufrufbeispiel: ' Anwendung mit Aufrufparameter Dim sCmdLine As String sCmdLine = "D:\MyExe.exe backup" ' Prüfen, ob die Aufgabe bereits existiert If NTTaskExists(sCmdLine) Then MsgBox "Die Aufgabe existiert bereits!" Else ' Aufgabe existiert noch nicht... jetzt erstellen 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!" Else MsgBox "Aufgabe wurde ordnungsgemäß erstellt!" End If End If |