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); }
//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; } }
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); }