示例#1
0
        private static TaskBaseAction CreateTaskAction(Microsoft.Win32.TaskScheduler.Action action)
        {
            var taskAction = default(TaskBaseAction);

            switch (action.ActionType)
            {
            case TaskActionType.Execute:
                var executeAction = action as ExecAction;

                taskAction = new TaskExecuteAction
                {
                    Arguments        = executeAction.Arguments,
                    Command          = executeAction.Path,
                    WorkingDirectory = executeAction.WorkingDirectory
                };
                break;
            }

            if (taskAction != null)
            {
                taskAction.ID = action.Id;
            }

            return(taskAction);
        }
示例#2
0
        private string GetCommandText(Action action)
        {
            ExecAction        execAction        = action as ExecAction;
            ShowMessageAction showMessageAction = action as ShowMessageAction;
            ComHandlerAction  comHandlerAction  = action as ComHandlerAction;
            EmailAction       emailAction       = action as EmailAction;

            if (execAction != null)
            {
                return($"{execAction.Path} {execAction.Arguments}");
            }
            else if (showMessageAction != null)
            {
                return($"Show message: '{showMessageAction.Title}'");
            }
            else if (comHandlerAction != null)
            {
                return($"COM handler: '{comHandlerAction.ClassName}'");
            }
            else if (emailAction != null)
            {
                return($"Send email: '{emailAction.Subject}'");
            }
            else
            {
                return("unknown action.");
            }
        }
        private static string GetPathFromAction(Microsoft.Win32.TaskScheduler.Action action)
        {
            switch (action)
            {
            case ExecAction act:
                return($"{act.Path} {act.Arguments}");

            case EmailAction act:
                return($"Email To: {act.To} From: {act.From} Subject: {act.Subject}");

            case ComHandlerAction act:
                return($"{act.ActionType} - {act}");

            case ShowMessageAction act:
                return($"{act.ActionType} - {act}");

            default:
                return($"Unknown action type: '{action.ActionType}'");
            }
        }
示例#4
0
 public Dev2Action(Action nativeTnstance)
 {
     _nativeTnstance = nativeTnstance;
 }
示例#5
0
 public Dev2Action(Microsoft.Win32.TaskScheduler.Action nativeTnstance)
 {
     _nativeTnstance = nativeTnstance;
 }
 public IAction CreateAction(Microsoft.Win32.TaskScheduler.Action action)
 {
     return(new Dev2Action(action));
 }
示例#7
0
 public ActionsData(Action action)
 {
     this.action = action;
 }
		private string GetCommandText(Action action)
		{
			ExecAction execAction = action as ExecAction;
			ShowMessageAction showMessageAction = action as ShowMessageAction;
			ComHandlerAction comHandlerAction = action as ComHandlerAction;
			EmailAction emailAction = action as EmailAction;

			if (execAction != null)
			{
				return $"{execAction.Path} {execAction.Arguments}";
			}
			else if (showMessageAction != null)
			{
				return $"Show message: '{showMessageAction.Title}'";
			}
			else if (comHandlerAction != null)
			{
				return $"COM handler: '{comHandlerAction.ClassName}'";
			}
			else if (emailAction != null)
			{
				return $"Send email: '{emailAction.Subject}'";
			}
			else
			{
				return "unknown action.";
			}
		}
        /// <summary>
        /// 创建一个计划任务
        /// </summary>
        /// <param name="taskName">计划任务名称</param>
        /// <param name="taskDescription">计划任务描述</param>
        /// <param name="trigger">触发条件</param>
        /// <param name="action">执行任务</param>
        /// <param name="subFolderName">计划任务所在的文件夹</param>
        public static void CreateTask(string subFolderName, string taskName, string taskDescription, Trigger trigger, Microsoft.Win32.TaskScheduler.Action action)
        {
            using (TaskService ts = new TaskService())
            {
                using (TaskDefinition td = ts.NewTask())
                {
                    td.RegistrationInfo.Description = taskDescription;
                    td.RegistrationInfo.Author      = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

                    #region LogonType元素和UserId元素被一起使用,以定义需要运行这些任务的用户。
                    //http://stackoverflow.com/questions/8170236/how-to-set-run-only-if-logged-in-and-run-as-with-taskscheduler-in-c
                    //td.Principal.UserId = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                    //td.Principal.LogonType = TaskLogonType.InteractiveToken;
                    #endregion
                    td.Principal.RunLevel = TaskRunLevel.Highest;
                    td.Triggers.Add(trigger);
                    td.Actions.Add(action);
                    TaskFolder folder = ts.RootFolder;
                    if (!string.IsNullOrWhiteSpace(subFolderName))
                    {
                        if (!folder.SubFolders.Exists(subFolderName))
                        {
                            folder = folder.CreateFolder(subFolderName);
                        }
                        else
                        {
                            folder = folder.SubFolders[subFolderName];
                        }
                    }
                    folder.RegisterTaskDefinition(taskName, td);
                    folder.Dispose();
                    folder = null;
                }
            }
        }