2010-10-20 28 views
30

(COM tabanlı) Görev Zamanlayıcı 2.0 API'sı için bir .NET C# sarmalayıcısı için herhangi bir öneri var mı?C# Görev Görev Zamanlayıcısı 2.0 için API

Google kullanarak hiçbir şey bulamadınız.

(Böyle Quartz.net olarak .net tabanlı schedulers var farkındayım, ama ben pencereleri Zamanlayıcısı'nda tam işlevi GUI gerekir)

Teşekkür,

Matt

cevap

30
+0

Evet sayesinde schtasks'. Tam olarak aradığım şey buydu. Bir şekilde onu aradığımda kaçırdı. –

+0

+1 tam olarak neye ihtiyacım vardı, ben de aynı soruyu göndermeden önce burada bir arama yapmaya karar verene kadar biraz arandım, aynı zamanda Matt – FRoZeN

+0

Tam olarak aradığım şey. Görev Zamanlayıcısı ağrılı ve komut satırı (şemalar) daha da kötü görünüyor. Bu API şu ana kadar harika çalışıyor. Teşekkür ederim! – Robin

5

komut mı çizgi yeterince iyi mi?

at 23:39 /every:wednesday defrag c:

+5

Ya da daha iyisi onun halefi, ' –

8

sonra aşağıda herhangi bir üçüncü taraf sarmalayıcı kullanmak istemiyorsanız task.Code, 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

'ITaskService',' TaskSchedulerClass', 'ITaskDefinition',' ITriggerCollection', 'ITrigger', IActionCollection',' IAction', 'IExecAction' ve' ITaskFolder'ı nereden aldınız? Bu sınıflar ve arabirimlerle derleme Visual Studio 2010'da kolayca görülemez. – Zarepheth

+3

Nevermind - "taskschd.dll" dosyasını buldum ve Visual Studio'nun bir Interop sarılmış üretmesini sağladıktan sonra, projeme aktarmayı başardım. Eğer sadece PowerShell ISE ile aynı şeyi yapabilseydim ve hedef hedef makinelere dağıtabilseydim ... – Zarepheth

+0

Günümü kurtardın, çok teşekkürler! – Mikolaytis

0
çalışır planlamak için örnek kod

Tam işlevli GUI'yi aşağıdaki Nuget komutuyla alabilirsiniz.

PM> Yükle-Package TaskSchedulerEditor

+1

niçin windows için gui yapısına sahipse gui ile bir paket kurabildiniz, özellikle bu taskchd.msc/s' – Proxx

+0

Burada TaskSchedulerEditor, Windows görev zamanlayıcı GUI'ye erişmek için C# kodunda kullanılmak üzere tasarlanan COM sarmalayıcısının adıdır. –

+0

Bu, http://taskscheduler.codeplex.com/ için nuget paketidir. –

İlgili konular