TaskSchedulerTool.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Y.Utils.WindowsUtils.InfoUtils
  7. {
  8. public class TaskSchedulerTool
  9. {
  10. ///// <summary>
  11. ///// get all tasks
  12. ///// </summary>
  13. //public static IRegisteredTaskCollection GetAllTasks()
  14. //{
  15. // TaskSchedulerClass ts = new TaskSchedulerClass();
  16. // ts.Connect(null, null, null, null);
  17. // ITaskFolder folder = ts.GetFolder("\\");
  18. // IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);
  19. // return tasks_exists;
  20. //}
  21. ///// <summary>
  22. ///// create task
  23. ///// </summary>
  24. ///// <param name="creator"></param>
  25. ///// <param name="taskName"></param>
  26. ///// <param name="path"></param>
  27. ///// <param name="interval"></param>
  28. ///// <returns>state</returns>
  29. //public static _TASK_STATE CreateTaskScheduler(string creator, string taskName, string path, string interval)
  30. //{
  31. // try
  32. // {
  33. // Delete(taskName);
  34. // //new scheduler
  35. // TaskSchedulerClass scheduler = new TaskSchedulerClass();
  36. // //pc-name/ip,username,domain,password
  37. // scheduler.Connect(null, null, null, null);
  38. // //get scheduler folder
  39. // ITaskFolder folder = scheduler.GetFolder("\\");
  40. // //set base attr
  41. // ITaskDefinition task = scheduler.NewTask(0);
  42. // task.RegistrationInfo.Author = "McodsAdmin";//creator
  43. // task.RegistrationInfo.Description = "...";//description
  44. // //set trigger (IDailyTrigger ITimeTrigger)
  45. // ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
  46. // tt.Repetition.Interval = interval;// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
  47. // tt.StartBoundary = "2015-04-09T14:27:25";//start time
  48. // //set action
  49. // IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
  50. // action.Path = path;
  51. // task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
  52. // task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
  53. // task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
  54. // IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
  55. // (int)_TASK_CREATION.TASK_CREATE, null, //user
  56. // null, // password
  57. // _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
  58. // "");
  59. // IRunningTask runTask = regTask.Run(null);
  60. // return runTask.State;
  61. // }
  62. // catch (Exception ex)
  63. // {
  64. // throw ex;
  65. // }
  66. //}
  67. //public static _TASK_STATE Create(string name, string file, string author, string desc)
  68. //{
  69. // try
  70. // {
  71. // //删除重名任务
  72. // Delete(name);
  73. // //new scheduler
  74. // TaskSchedulerClass scheduler = new TaskSchedulerClass();
  75. // //pc-name/ip,username,domain,password
  76. // scheduler.Connect(null, null, null, null);
  77. // //get scheduler folder
  78. // ITaskFolder folder = scheduler.GetFolder("\\");
  79. // //set base attr
  80. // ITaskDefinition task = scheduler.NewTask(0);
  81. // task.RegistrationInfo.Author = author;//创建者
  82. // task.RegistrationInfo.Description = desc;//描述
  83. // //set trigger (IDailyTrigger ITimeTrigger)
  84. // task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
  85. // //set action
  86. // IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
  87. // action.Path = file;
  88. // task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
  89. // task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
  90. // task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
  91. // IRegisteredTask regTask =
  92. // folder.RegisterTaskDefinition(name, task,
  93. // (int)_TASK_CREATION.TASK_CREATE, null, //user
  94. // null, // password
  95. // _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
  96. // "");
  97. // IRunningTask runTask = regTask.Run(null);
  98. // return runTask.State;
  99. // }
  100. // catch (Exception ex)
  101. // {
  102. // throw ex;
  103. // }
  104. //}
  105. //public static void Delete(string name)
  106. //{
  107. // if (Exists(name))
  108. // {
  109. // TaskSchedulerClass ts = new TaskSchedulerClass();
  110. // ts.Connect(null, null, null, null);
  111. // ITaskFolder folder = ts.GetFolder("\\");
  112. // folder.DeleteTask(name, 0);
  113. // }
  114. //}
  115. //public static bool Exists(string name)
  116. //{
  117. // var isExists = false;
  118. // IRegisteredTaskCollection tasks_exists = GetAllTasks();
  119. // for (int i = 1; i <= tasks_exists.Count; i++)
  120. // {
  121. // IRegisteredTask t = tasks_exists[i];
  122. // if (t.Name.Equals(name))
  123. // {
  124. // isExists = true;
  125. // break;
  126. // }
  127. // }
  128. // return isExists;
  129. //}
  130. }
  131. }