2015-08-21 29 views
2
ITaskService s = new TaskSchedulerClass(); 

s.Connect(
    this.ControllerName, 
    Configuration.UserName, 
    Configuration.Domain, 
    Configuration.Password); 

ITaskFolder tf = s.GetFolder("\\"); 

IRegisteredTaskCollection allTask = null; 

IRunningTaskCollection allTaskRunning = s.GetRunningTasks(0); 

我能夠得到使用IRunningTaskCollection正在運行的任務,但無法找到現成的任務找到所有從任務計劃程序運行和準備工作。如何使用taskschd.dll庫

+0

檢查此鏈接了:https://msdn.microsoft.com/en-us/library/windows /desktop/aa446865(v=vs.85).aspx它可能有幫助。 – Tim

回答

0

不幸的是,沒有一種方便的方法,但你可以自己寫。使用遞歸遍歷任務文件夾層次結構。事情是這樣的......

private static List<IRegisteredTask> GetReadyAndRunningTasks(
    ITaskFolder folder, 
    List<IRegisteredTask> readyAndRunningTasks = null) 
{ 
    if (readyAndRunningTasks == null) 
    { 
     readyAndRunningTasks = new List<IRegisteredTask>(); 
    } 

    IRegisteredTaskCollection tasks = folder.GetTasks(flags: 0); 

    foreach (IRegisteredTask task in tasks) 
    { 
     if (task.State == _TASK_STATE.TASK_STATE_READY 
      || task.State == _TASK_STATE.TASK_STATE_RUNNING) 
     { 
      readyAndRunningTasks.Add(task); 
     } 
    } 

    foreach (ITaskFolder subFolder in folder.GetFolders(flags: 0)) 
    { 
     GetReadyAndRunningTasks(subFolder, readyAndRunningTasks); 
    } 

    return readyAndRunningTasks; 
} 

然後調用它像這樣...

List<IRegisteredTask> readyAndRunningTasks 
    = GetReadyAndRunningTasks(s.GetFolder(Path: "\\"));