2010-10-20 10 views
30

Qualcuno ha qualche raccomandazione per un wrapper .NET C# per l'API di Utilità di pianificazione 2.0 (basata su COM)?API C# per Task Scheduler 2.0

Impossibile trovare nulla utilizzando Google.

(sono consapevole ci sono di pianificazione basati su .NET, come Quartz.net, ma ho bisogno la GUI pienamente FUNZIONATO nella pianificazione di Windows)

Grazie,

Matt

risposta

30
+0

Sì, grazie. Questo è esattamente quello che stavo cercando. In qualche modo se lo sono perso quando l'ho cercato. –

+0

+1 esattamente quello di cui avevo bisogno, ho anche cercato un po 'fino a quando ho deciso di fare una ricerca qui prima di postare la stessa domanda di Matt – FRoZeN

+0

Esattamente quello che stavo cercando. L'Utilità di pianificazione è dolorosa e la riga di comando (schtasks) sembra ancora peggiore. Questa API sta funzionando alla grande finora. Grazie! – Robin

5

è il comando linea abbastanza buona?

at 23:39 /every:wednesday defrag c:

+5

O meglio ancora il suo successore, 'schtasks' –

8

Se non volete usare terze parti involucro quindi al di sotto è il codice di esempio per programmare task.Code funziona in Windows 7.

//create task service instance 
ITaskService taskService = new TaskSchedulerClass(); 
taskService.Connect(); 
ITaskDefinition taskDefinition = taskService.NewTask(0); 
taskDefinition.Settings.Enabled = true; 
taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_1; 

//create trigger for task creation. 
ITriggerCollection _iTriggerCollection = taskDefinition.Triggers; 
ITrigger _trigger = _iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME); 
_trigger.StartBoundary = DateTime.Now.AddSeconds(15).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"); 
_trigger.EndBoundary = DateTime.Now.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"); 
_trigger.Enabled = true; 

///get actions. 
IActionCollection actions = taskDefinition.Actions; 
_TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC; 

//create new action 
IAction action = actions.Create(actionType); 
IExecAction execAction = action as IExecAction; 
execAction.Path = @"C:\Windows\System32\notepad.exe"; 
ITaskFolder rootFolder = taskService.GetFolder(@"\"); 

//register task. 
rootFolder.RegisterTaskDefinition("test", taskDefinition, 6, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, null); 
+1

Da dove sono stati visualizzati 'ITaskService',' TaskSchedulerClass', 'ITaskDefinition',' ITriggerCollection', 'ITrigger',' IActionCollection', 'IAction',' IExecAction' e 'ITaskFolder'? L'assembly con tali classi e interfacce non è facilmente visibile in Visual Studio 2010. – Zarepheth

+3

Nevermind - Ho trovato il file "taskschd.dll" e dopo aver permesso a Visual Studio di generare un pacchetto Interop, è stato possibile importarlo nel mio progetto. Se solo potessi fare lo stesso con il PowerShell ISE e farlo distribuire ai computer target di destinazione ... – Zarepheth

+0

Hai salvato la mia giornata, grazie mille! – Mikolaytis

0

È possibile ottenere una GUI completamente funzionante tramite il comando Nuget.

PM> Installa-Package TaskSchedulerEditor

+1

perché dovresti installare un pacchetto con una gui se Windows ha una build gui specialmente per questo 'taskschd.msc/s' – Proxx

+0

Qui TaskSchedulerEditor è il nome del wrapper COM progettato per essere usato nel codice C# per accedere alla GUI di Windows Task Scheduler. –

+0

Questo è il pacchetto nuget per http://taskscheduler.codeplex.com/ –