2017-04-12 33 views
0

我可以創建一個新的任務是這樣的:獲取參數從任務計劃程序

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 

但現在我需要得到的任務計劃程序中的所有任務參數。此時我收回任務的數量和名字,但我不知道如何獲得參數。

我需要幫助

回答

0

後敲我的頭幾天,我得到了一個解決方案。我仍然無法獲得參數,因此我創建了服務,獲得了所有任務,並在循環中循環了一系列任務,獲取任務文件,讀取該XML文件,然後從中獲取有關我正在努力工作。

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