Windows 7, Delphi XE2 i TaskScheduler 1.1

0

Mam żadne do niewielkie doświadczenie w importowaniu bibliotek typów, dlatego potrzebuję potwierdzenia jednej kwestii.

Pracuję na Windows 7 i Delphi XE2 i zaimportowałem bibliotekę typów (Type Library): Task Scheduler 1.1.

Pytanie - czy kiedy napiszę aplikację, opierającą się o tą bibliotekę, to po przeniesieniu jej np. na Windows XP będzie działała ?

I pytanie pomocnicze - w przeglądarce bibliotek typów, dla Task Schedulera pokazuje mi w kolumnie Filename c:\Windows\SysWOW64\taskschd.dll - jak mniemam jest to biblioteka 64bitowa. Czy ma to jakiekolwiek znaczenie przy dystrybucji programu na inne systemy (w tym 32 bit również) ?

Aha - uprzedzając - aplikacja jeszcze nie powstała. Pytam, bo nie chciałbym zabrnąć w ślepą uliczkę.

0

Katalog SysWOW64 zawiera 32 bitowe dllki ;). http://en.wikipedia.org/wiki/WoW64 Jeżeli biblioteka w tej samej wersji jest dostępna dla systemu Windows XP, to aplikacja będzie działać. Najlepiej zrób szybki prototyp i sprawdź czy działa.

0

http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx
Z tego co piszą w wersji 1 powinien działać tylko że tam mowa o 1.0 i 2.0 ale wydaje mi się że mieli na myśli 1.x

0

Bardzo dzięki za szybką reakcję. Na razie powinno mi to wystarczyć.

0

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 ?

0

Trochę to trwało, ale znalazłem działające rozwiązanie i może się komuś przyda:
http://lazarus.freepascal.org/index.php?topic=15530.15
Post #21

1 użytkowników online, w tym zalogowanych: 0, gości: 1