public void Dev2EventTrigger_Construct_Test()
 {
     int? id = 0;
     var eventTrigger = new EventTrigger("bob","thomas",id);
     Dev2EventTrigger dev2EventTrigger = new Dev2EventTrigger(_taskServiceConvertorFactory.Object, eventTrigger) ;
     Assert.AreEqual(eventTrigger.Delay, dev2EventTrigger.Delay);
     Assert.AreEqual(eventTrigger.Subscription, dev2EventTrigger.Subscription);
     Assert.AreEqual(eventTrigger.ValueQueries, dev2EventTrigger.ValueQueries);
     Assert.AreEqual(eventTrigger.Delay, dev2EventTrigger.Delay);
 }
Example #2
0
        //Handles the events of external programms. Uses the inbuilt Windows Task Scheduler, therefore application doesn't need to run in the background
        //Make sure to enable proccess creation logging

        public static bool CreateTask(string processPath, string taskName, string processId)
        {
            if (processId == null)
            {
                throw new ArgumentNullException(nameof(processId));
            }

            bool res = false;

            using (TaskService ts = new TaskService())
            {
                TaskDefinition td = ts.NewTask();
                td.RegistrationInfo.Description = "This Task in generated by ProcessToDo. It calls the Todo-List that is set up for this this programm: " + processPath;

                Microsoft.Win32.TaskScheduler.EventTrigger trigger = new Microsoft.Win32.TaskScheduler.EventTrigger();
                trigger.Subscription = "<QueryList>\n" +
                                       "  <Query Id=\"0\" Path=\"Security\">\n" +
                                       "    <Select Path=\"Security\">\n" +
                                       "     *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]] \n" +
                                       "   and \n" +
                                       "     *[EventData[Data[@Name='NewProcessName'] and (Data='" + processPath + "')]]\n" +
                                       "    </Select>\n" +
                                       "  </Query>\n" +
                                       "</QueryList>";
                td.Triggers.Add(trigger);

                string todoListHandler = FileSystem.FindTodoListHandlerExe();

                td.Actions.Add(new ExecAction(todoListHandler, "caller=" + processId, null));

                Task t = ts.RootFolder.RegisterTaskDefinition(Constants.taskSchedFolder + taskName, td);
                if (t.Enabled)
                {
                    res = true;
                }

                //Now everytime "processPath" is opend, the ToDoListHandler is called with "processPath" as parameter.
            }
            return(res);
        }
 public Dev2EventTrigger(ITaskServiceConvertorFactory taskServiceConvertorFactory, EventTrigger instance)
     : base(taskServiceConvertorFactory, instance)
 {
 }
		private void triggerTypeCombo_SelectedValueChanged(object sender, EventArgs e)
		{
			if (triggerTypeCombo.SelectedValue == null)
				return;

			Trigger newTrigger = null;
			switch (TriggerView)
			{
				case TaskTriggerDisplayType.Schedule:
				default:
					settingsTabControl.SelectedTab = scheduleTab;
					if (!onAssignment)
					{
						schedOneRadio.Checked = schedMonthlyRadio.Checked = schedDailyRadio.Checked = schedWeeklyRadio.Checked = false;
						schedOneRadio.Checked = true;
						return;
					}
					break;
				case TaskTriggerDisplayType.Logon:
					logonRemotePanel.Visible = false;
					settingsTabControl.SelectedTab = logonTab;
					if (!onAssignment) newTrigger = new LogonTrigger();
					break;
				case TaskTriggerDisplayType.Boot:
					settingsTabControl.SelectedTab = startupTab;
					if (!onAssignment) newTrigger = new BootTrigger();
					break;
				case TaskTriggerDisplayType.Idle:
					settingsTabControl.SelectedTab = idleTab;
					if (!onAssignment) newTrigger = new IdleTrigger();
					break;
				case TaskTriggerDisplayType.Event:
					settingsTabControl.SelectedTab = onEventTab;
					if (!onAssignment) newTrigger = new EventTrigger();
					break;
				case TaskTriggerDisplayType.Registration:
					settingsTabControl.SelectedTab = startupTab;
					if (!onAssignment) newTrigger = new RegistrationTrigger();
					break;
				case TaskTriggerDisplayType.SessionConnect:
				case TaskTriggerDisplayType.SessionDisconnect:
				case TaskTriggerDisplayType.WorkstationLock:
				case TaskTriggerDisplayType.WorkstationUnlock:
					logonRemotePanel.Visible = (int)TriggerView < (int)TaskTriggerDisplayType.WorkstationLock;
					settingsTabControl.SelectedTab = logonTab;
					if (!onAssignment)
						newTrigger = new SessionStateChangeTrigger() { StateChange = (TaskSessionStateChangeType)(TriggerView - 110) };
					break;
				case TaskTriggerDisplayType.Custom:
					settingsTabControl.SelectedTab = customTab;
					triggerTypeCombo.Enabled = okBtn.Enabled = false;
					break;
			}

			if (newTrigger != null && !onAssignment)
			{
				if (trigger != null)
					newTrigger.CopyProperties(trigger);
				this.Trigger = newTrigger;
			}
		}
Example #5
0
        private static void DefineTask(TaskService ts, string description, string taskName, TriggerType trigger)
        {
            string executable = string.Format("{0}\\percip.io.exe", AssemblyDirectory);
            TaskDefinition td = ts.NewTask();
            td.Principal.RunLevel = TaskRunLevel.Highest;
            td.Principal.LogonType = TaskLogonType.S4U;
            td.Settings.WakeToRun = true;
            td.RegistrationInfo.Description = description;

            switch (trigger)
            {
                case TriggerType.Logon:
                    td.Triggers.Add(new LogonTrigger());
                    td.Actions.Add(new ExecAction(executable, "", AssemblyDirectory));
                    break;
                case TriggerType.Unlock:
                    td.Triggers.Add(new SessionStateChangeTrigger(TaskSessionStateChangeType.SessionUnlock));
                    td.Actions.Add(new ExecAction(executable, "", AssemblyDirectory));
                    break;
                case TriggerType.Logoff:
                    EventTrigger eTrigger = new EventTrigger();
                    eTrigger.Subscription = @"<QueryList><Query Id='1'><Select Path='System'>*[System[(EventID = 1074 or EventID = 7002 or EventID=42)]]</Select></Query></QueryList>";
                    eTrigger.ValueQueries.Add("Name", "Value");
                    td.Actions.Add(new ExecAction(executable, "lock", AssemblyDirectory));
                    td.Triggers.Add(eTrigger);
                    break;
                case TriggerType.Lock:
                    td.Triggers.Add(new SessionStateChangeTrigger(TaskSessionStateChangeType.SessionLock));
                    td.Actions.Add(new ExecAction(executable, "lock", AssemblyDirectory));
                    break;
                case TriggerType.Energysave:
                    EventTrigger evTrigger = new EventTrigger();
                    evTrigger.Subscription = @"<QueryList><Query Id='1'><Select Path='System'>*[System[(EventID=42)]]</Select></Query></QueryList>";
                    evTrigger.ValueQueries.Add("Name", "Value");
                    td.Actions.Add(new ExecAction(executable, "lock", AssemblyDirectory));
                    td.Triggers.Add(evTrigger);
                    break;
            }
            ts.RootFolder.RegisterTaskDefinition(taskPrefix + taskName, td);
        }
        public void TaskShedulerWrapper_Dev2EventTrigger_Construct_Test()
        {

            var native = new EventTrigger("w", "ww",3);
            Dev2EventTrigger wrapped = new Dev2EventTrigger(_taskServiceConvertorFactory.Object, native);
            wrapped.Delay = new TimeSpan(2);
            wrapped.Subscription = "bob";
            
            Assert.AreEqual(wrapped.Delay,native.Delay);
            Assert.AreEqual(wrapped.Enabled,native.Enabled);
            Assert.AreEqual(wrapped.EndBoundary, native.EndBoundary);
            Assert.AreEqual(wrapped.Id,native.Id);
            Assert.AreEqual(wrapped.Instance,native);
            Assert.AreEqual(wrapped.Subscription,native.Subscription);

        }