2017-04-12 1 views
0

Je peux créer une nouvelle tâche comme ceci:ARGUMENTATIONS Planificateur de tâches

Friend Sub CreateTaskF(ct_NameTask As String, ct_DescriptionTask As String, ct_Hour As Integer, ct_Minut As Integer, ct_date As String, ct_arg As String) 


    Dim ts As TaskService = New TaskService 

    Dim starttime 
    starttime = ct_date & "T" & ct_Hour & ":" & ct_Minut & ":00" 

    Dim td As TaskDefinition = ts.NewTask 
    td.RegistrationInfo.Description = ct_DescriptionTask 

    td.Triggers.Add(New DailyTrigger With {.StartBoundary = StartTime}) 
    td.Actions.Add(New ExecAction(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString & "\Roaming\Extractor.exe", ct_arg, Nothing)) 
    ts.RootFolder.RegisterTaskDefinition(ct_NameTask, td) 

End Sub 

Mais maintenant je dois obtenir l'argument de toutes les tâches dans le Planificateur de tâches. À ce moment, je recive le nombre de tâches, et leurs noms, mais je ne sais pas comment obtenir l'argument.

je besoin d'aide

Répondre

0

Après quelques jours de frapper ma tête, je suis arrivé une solution. Je n'arrivais toujours pas à obtenir les arguments, donc j'ai créé le service, obtenu toutes les tâches, et bouclé une collection de tâches, dans la boucle, j'ai un fichier de tâche, j'ai lu ce fichier XML et de là j'ai tout sur le tâche que je travaille à travailler.

Friend Function listTask() As DataTable 
    Dim dtTasks As New DataTable 
    dtTasks.Columns.Add("NAME") 
    dtTasks.Columns.Add("STATE") 
    dtTasks.Columns.Add("ARGS") 

    Dim service 
    service = CreateObject("Schedule.Service") 
    Call service.Connect() 

    ' Get the task folder that contains the tasks. 
    Dim rootFolder 
    rootFolder = service.GetFolder("\") 

    Dim taskCollection 'As Microsoft.Win32.TaskScheduler.TaskCollection 
    taskCollection = rootFolder.GetTasks(0) 

    Dim numberOfTasks As Integer 
    numberOfTasks = taskCollection.Count 


    If numberOfTasks = 0 Then 
     MsgBox("Não Existem Tarefas") 
    Else 
     Dim count As Integer = 0 
     Dim registeredTask 
     For Each registeredTask In taskCollection 
      'For i = 0 To numberOfTasks - 1 
      Dim taskState As String 
      Select Case registeredTask.State 
       Case "0" 
        taskState = "Unknown" 
       Case "1" 
        taskState = "Disabled" 
       Case "2" 
        taskState = "Queued" 
       Case "3" 
        taskState = "Ready" 
       Case "4" 
        taskState = "Running" 
      End Select 
      'TENHO AQUI TUDO !!!!! 
      Dim aaaa As String = registeredTask.xml 

      Dim BodyDoc As XmlDocument = New XmlDocument() 
      BodyDoc.LoadXml(aaaa) 
      Dim ReaderDoc As XmlNodeReader = New XmlNodeReader(BodyDoc) 

      'TENTAR METER NO DATASET 
      Dim ds As DataSet = New DataSet() 

      ds.ReadXml(ReaderDoc) 
      ReaderDoc.Close() 


      dtTasks.Rows.Add() 
      dtTasks.Rows(count).Item("NAME") = ds.Tables("RegistrationInfo").Rows(0).Item("URI").ToString 
      dtTasks.Rows(count).Item("STATE") = taskState.ToString 
      Dim column As DataColumnCollection = ds.Tables("Exec").Columns 
      If column.Contains("Arguments") Then 
       dtTasks.Rows(count).Item("ARGS") = ds.Tables("Exec").Rows(0).Item("Arguments").ToString 
      Else 
       dtTasks.Rows(count).Item("ARGS") = "" 
      End If 
      count = count + 1 

     Next 
    End If 
    Return dtTasks 

End Function