TaskSchedulerTool.cs 6.0 KB

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