Niestety - muszę Was prosić o pomoc. Jak wspomniałem - mam żadne doświadczenie w pracy z bibliotekami typów.
Zaimportowałem bibliotekę typów i wygenerowałem moduł jak w załączniku.
Następnie na bazie tego przykładu:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383624%28v=vs.85%29.aspx
Chciałem przygotować prototyp aplikacji. Wypociłem taki kod:
procedure TForm1.Button1Click(Sender: TObject);
var wszTaskName : PChar;
TaskScheduler : TTaskScheduler;
TaskFolder : ITaskFolder;
TaskDefinition : ITaskDefinition;
RegistrationInfo : IRegistrationInfo;
Principal : IPrincipal;
TaskSettings : ITaskSettings;
IdleSettings : IIdleSettings;
TriggerCollection : ITriggerCollection;
Trigger : ITrigger;
TimeTrigger : ITimeTrigger;
ActionCollection : IActionCollection;
Action : IAction;
ExecAction : IExecAction;
RegisteredTask : IRegisteredTask;
begin
try
CoInitializeEx(nil,COINIT_MULTITHREADED);
CoInitializeSecurity(nil,-1,nil,nil,6,3,nil,0,nil);
TaskScheduler := TTaskScheduler.Create(Self);
TaskScheduler.Connect;
TaskFolder:=TaskScheduler.GetFolder('\\');
wszTaskName:='Time Trigger Test Task';
TaskFolder.DeleteTask('Time Trigger Test Task',0);
TaskDefinition:=TaskScheduler.NewTask(0);
RegistrationInfo:=TaskDefinition.RegistrationInfo;
RegistrationInfo.Author:='Author Name';
Principal:=TaskDefinition.Principal;
Principal.LogonType:=TASK_LOGON_INTERACTIVE_TOKEN;
TaskSettings:=TaskDefinition.Settings;
TaskSettings.StartWhenAvailable:=TRUE;
IdleSettings:=TaskSettings.IdleSettings;
IdleSettings.WaitTimeout:='PT5M';
TriggerCollection:=TaskDefinition.Triggers;
Trigger:=TriggerCollection.Create(TASK_TRIGGER_TIME);
Trigger.QueryInterface(IID_ITimeTrigger,TimeTrigger);
TimeTrigger.Id:='Trigger1';
TimeTrigger.EndBoundary:='2015-05-02T08:00:00';
TimeTrigger.StartBoundary:='2005-01-01T12:05:00';
ActionCollection:=TaskDefinition.Actions;
Action:=ActionCollection.Create(TASK_ACTION_EXEC);
Action.QueryInterface(IID_IExecAction,ExecAction);
ExecAction.Path:='d:\\putty.exe';
RegisteredTask:=TaskFolder.RegisterTaskDefinition (wszTaskName,TaskDefinition,TASK_CREATE_OR_UPDATE,'','',TASK_LOGON_INTERACTIVE_TOKEN,'');
finally
TaskScheduler.Free;
Trigger._Release;
Action._Release;
CoUnInitialize;
end;
end;
Aplikacja kompiluje się i uruchamia. Jak klikam Button1, to pojawia się komunikat: 'Ta operacje jest obsługiwana tylko wtedy, gdy jest nawiązane połączenie z serwerem'
Niby wykonuję: TaskScheduler.Connect; - ale zdaje się, że coś jeszcze powinienem zrobić, lub coś robię źle.
Jesteście w stanie naprowadzić mnie na właściwe tory ?