2010-10-20 40 views
30

¿Alguien tiene alguna recomendación para un .NET C# wrapper para la API (basada en COM) Task Scheduler 2.0?C# API para el Programador de tareas 2.0

No se pudo encontrar nada usando Google.

(soy consciente de que hay programadores .NET basados ​​tales como Quartz.net, pero necesito la interfaz gráfica totalmente funcionado en el Programador de Windows)

Gracias,

Matt

Respuesta

30
+0

Sí, gracias. Eso es exactamente lo que estaba buscando. De alguna manera lo perdí cuando lo busqué. –

+0

+1 exactamente lo que necesitaba, también busqué un poco hasta que decidí hacer una búsqueda aquí antes de publicar la misma pregunta que Matt – FRoZeN

+0

Exactamente lo que estaba buscando. El Programador de tareas es doloroso y la línea de comando (schtasks) se ve aún peor. Esta API está funcionando muy bien hasta ahora. ¡Gracias! – Robin

5

es el comando línea lo suficientemente bueno?

at 23:39 /every:wednesday defrag c:

+5

O mejor aún su sucesor, 'schtasks' –

8

Si no desea utilizar ninguna tercera envoltura partido entonces a continuación es el código de ejemplo para programar task.Code funciona en 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

¿De dónde obtuvieron 'ITaskService',' TaskSchedulerClass', 'ITaskDefinition',' ITriggerCollection', 'ITrigger',' IActionCollection', 'IAction',' IExecAction', y 'ITaskFolder'? El ensamblado con esas clases e interfaces no es fácilmente visible en Visual Studio 2010. – Zarepheth

+3

Nevermind: Encontré el archivo "taskschd.dll" y, después de dejar que Visual Studio generara un Interop wrapped, pude importarlo a mi proyecto. Si solo pudiera hacer lo mismo con el ISE de PowerShell y hacer que se implemente en las máquinas de destino de destino ... – Zarepheth

+0

¡Me salvaste el día, muchas gracias! – Mikolaytis

0

Puede obtener una GUI completamente funcional a través del siguiente comando Nuget.

PM> Install-Package TaskSchedulerEditor

+1

¿por qué instalaría un paquete con una interfaz gráfica de usuario si Windows tiene una construcción de interfaz gráfica especialmente para esto 'taskschd.msc/s' – Proxx

+0

Aquí TaskSchedulerEditor es el nombre del contenedor COM diseñado para usarse en el código C# para acceder a la GUI del programador de tareas de Windows. –

+0

Este es el paquete nuget para http://taskscheduler.codeplex.com/ –

Cuestiones relacionadas