123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.IO;
- using TaskScheduler;
- using DevExpress.XtraEditors;
- namespace Uninpho.Tools.components.SomethingSetting
- {
- /// <summary>
- /// 自动化开关
- /// </summary>
- class AutoLoopClass
- {
- public AutoLoopClass(bool isstart)
- {
- if (isstart)
- {
- //开启
- AddWinTask(zdhSetClass.taskName, zdhSetClass.zdhexe, "P7D");
- XtraMessageBox.Show("算法自动化已加入windows任务计划", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
-
- }
- else
- {
- //关闭
- try
- {
- TaskSchedulerClass scheduler = new TaskSchedulerClass();
- scheduler.Connect(null, null, null, null);
- ITaskFolder folder = scheduler.GetFolder("\\");
- folder.DeleteTask(zdhSetClass.taskName, 0);
- }
- catch
- {
- }
- finally
- {
- XtraMessageBox.Show("算法自动化已从windows任务计划移除", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- }
- /// <summary>
- /// 添加Windows任务计划
- /// 在系统C:\Windows\System32找到taskschd.dll并引用到项目中,选中dll将嵌入互操作类型改为false
- /// </summary>
- /// <param name="taskName">任务名称</param>
- /// <param name="exePath">执行程序路径</param>
- /// <param name="interval">计划任务执行的频率
- /// </param>
- static void AddWinTask(string taskName, string exePath, string interval)
- {
- TaskSchedulerClass scheduler = new TaskSchedulerClass();
- scheduler.Connect(null, null, null, null);
- ITaskFolder folder = scheduler.GetFolder("\\");
- //获取所有Task
- IRegisteredTaskCollection tasks = folder.GetTasks(1);
- try
- {
- folder.DeleteTask(taskName, 0);
- }
- catch
- {
- }
- finally
- {
- //创建新的Task
- ITaskDefinition task = scheduler.NewTask(0);
- task.RegistrationInfo.Description = taskName;
- // IDailyTrigger、IMonthlyTrigger、IEventTrigger
- ITimeTrigger triger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
- //执行间隔
- triger.Repetition.Interval = interval;
- //任务开始时间(第一次执行时间)
- triger.StartBoundary = Convert.ToDateTime(zdhSetClass.startdate).ToString("yyyy-MM-ddTHH:mm:ss");
- //指定要执行的程序路径
- IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
- action.Path = exePath;
- //设置参数
- action.Arguments = "C#";
- //注册任务并开启执行
- IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task, (int)_TASK_CREATION.TASK_CREATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN);
- //IRunningTask runTask = regTask.Run(null);
- }
- }
- }
- }
|