2010-10-20 5 views
30

Est-ce que quelqu'un a des recommandations pour un wrapper .NET C# pour l'API Task Scheduler 2.0 (basé sur COM)?API C# pour le planificateur de tâches 2.0

Impossible de trouver quoi que ce soit en utilisant Google.

(Je suis conscient qu'il ya ordonnanceurs .net base tels que Quartz.net, mais j'ai besoin de l'interface graphique entièrement fonctionné dans le Planificateur de tâches Windows)

de Merci,

Matt

Répondre

30

Que diriez-vous ceci: http://taskscheduler.codeplex.com/

+0

merci Oui. C'est exactement ce que je cherchais. Quelque part manqué quand je l'ai cherché. –

+0

+1 exactement ce dont j'avais besoin, j'ai aussi cherché un peu jusqu'à ce que j'ai décidé de faire une recherche ici avant de poster la même question que Matt – FRoZeN

+0

Exactement ce que je cherchais. Task Scheduler est douloureux et la ligne de commande (schtasks) semble encore pire. Cette API fonctionne très bien jusqu'à présent. Je vous remercie! – Robin

5

est la commande ligne assez bien?

at 23:39 /every:wednesday defrag c:

+5

Ou mieux encore son successeur, 'schtasks' –

8

Si vous ne voulez pas utiliser un wrapper tiers alors ci-dessous est l'exemple de code pour programmer task.Code fonctionne sous 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

D'où avez-vous obtenu le 'ITaskService',' TaskSchedulerClass', 'ITaskDefinition',' ITriggerCollection', 'ITrigger',' IActionCollection', 'IAction',' IExecAction', et 'ITaskFolder'? L'assembly avec ces classes et interfaces n'est pas facilement visible dans Visual Studio 2010. – Zarepheth

+3

Nevermind - J'ai trouvé le fichier "taskschd.dll" et après avoir laissé Visual Studio générer un Interop enveloppé, j'ai pu l'importer dans mon projet. Si seulement je pouvais faire la même chose avec le PowerShell ISE et le déployer vers les machines cibles de destination ... – Zarepheth

+0

Vous avez sauvé ma journée, merci beaucoup! – Mikolaytis

0

Vous pouvez obtenir une interface graphique entièrement fonctionnelle via la commande Nuget suivante.

PM> Installer-Package TaskSchedulerEditor

+1

pourquoi voudriez-vous installer un paquet avec un gui si windows a une construction gui spécialement pour ce 'taskschd.msc/s' – Proxx

+0

Ici TaskSchedulerEditor est le nom du wrapper COM conçu pour être utilisé dans le code C# pour accéder au GUI du planificateur de tâches Windows. –

+0

Ceci est le paquet de nuget pour http://taskscheduler.codeplex.com/ –

Questions connexes