using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Azylee.Core.X
{
public class TaskSchedulerTool
{
/////
///// get all tasks
/////
//public static IRegisteredTaskCollection GetAllTasks()
//{
// TaskSchedulerClass ts = new TaskSchedulerClass();
// ts.Connect(null, null, null, null);
// ITaskFolder folder = ts.GetFolder("\\");
// IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);
// return tasks_exists;
//}
/////
///// create task
/////
/////
/////
/////
/////
///// state
//public static _TASK_STATE CreateTaskScheduler(string creator, string taskName, string path, string interval)
//{
// try
// {
// Delete(taskName);
// //new scheduler
// TaskSchedulerClass scheduler = new TaskSchedulerClass();
// //pc-name/ip,username,domain,password
// scheduler.Connect(null, null, null, null);
// //get scheduler folder
// ITaskFolder folder = scheduler.GetFolder("\\");
// //set base attr
// ITaskDefinition task = scheduler.NewTask(0);
// task.RegistrationInfo.Author = "McodsAdmin";//creator
// task.RegistrationInfo.Description = "...";//description
// //set trigger (IDailyTrigger ITimeTrigger)
// ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
// tt.Repetition.Interval = interval;// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
// tt.StartBoundary = "2015-04-09T14:27:25";//start time
// //set action
// IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
// action.Path = path;
// task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
// task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
// task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
// IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
// (int)_TASK_CREATION.TASK_CREATE, null, //user
// null, // password
// _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
// "");
// IRunningTask runTask = regTask.Run(null);
// return runTask.State;
// }
// catch (Exception ex)
// {
// throw ex;
// }
//}
//public static _TASK_STATE Create(string name, string file, string author, string desc)
//{
// try
// {
// //删除重名任务
// Delete(name);
// //new scheduler
// TaskSchedulerClass scheduler = new TaskSchedulerClass();
// //pc-name/ip,username,domain,password
// scheduler.Connect(null, null, null, null);
// //get scheduler folder
// ITaskFolder folder = scheduler.GetFolder("\\");
// //set base attr
// ITaskDefinition task = scheduler.NewTask(0);
// task.RegistrationInfo.Author = author;//创建者
// task.RegistrationInfo.Description = desc;//描述
// //set trigger (IDailyTrigger ITimeTrigger)
// task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
// //set action
// IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
// action.Path = file;
// task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
// task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
// task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
// IRegisteredTask regTask =
// folder.RegisterTaskDefinition(name, task,
// (int)_TASK_CREATION.TASK_CREATE, null, //user
// null, // password
// _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
// "");
// IRunningTask runTask = regTask.Run(null);
// return runTask.State;
// }
// catch (Exception ex)
// {
// throw ex;
// }
//}
//public static void Delete(string name)
//{
// if (Exists(name))
// {
// TaskSchedulerClass ts = new TaskSchedulerClass();
// ts.Connect(null, null, null, null);
// ITaskFolder folder = ts.GetFolder("\\");
// folder.DeleteTask(name, 0);
// }
//}
//public static bool Exists(string name)
//{
// var isExists = false;
// IRegisteredTaskCollection tasks_exists = GetAllTasks();
// for (int i = 1; i <= tasks_exists.Count; i++)
// {
// IRegisteredTask t = tasks_exists[i];
// if (t.Name.Equals(name))
// {
// isExists = true;
// break;
// }
// }
// return isExists;
//}
}
}