Entwickler-Ecke

Windows API - Taskplaner benutzen um Programm zu starten


Peter18 - Fr 07.05.10 13:59
Titel: Taskplaner benutzen um Programm zu starten
Ein freundliches Hallo an alle,

ich möchte den Windows Taskplaner verwenden um ein Programm von Delphi4 beim Booten oder zu einer bestimmten Zeit zu starten. In der OLE2.pas ist einiges dazu drin. Fehlende Teile habe ich mir "zusammengegoogelt". Dennoch funktioniert das noch nicht.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
procedure TaskScheduleTime();
var
  A    : Longword;
  pv   : OleVariant;
  Er   : Boolean;

begin
  Er  := FAlse;
  A   := CoInitialize(nil);
  if Succeeded(A) then
  begin
    A :=  CoCreateInstance(CLSID_CTaskScheduler, nil,
                           CLSCTX_INPROC_SERVER, IID_ITaskScheduler, pv);
    if Failed(A) then
    begin
      CoUninitialize();
      Er := True;
    end;
  end
  else
  begin
    CoUninitialize();
    Er := True;
  end;


"CoCreateInstance" liefert den Fehler kein Interface. Vielleicht gibt es ja eine noch einfachere Möglichkeit, ev. mit "CreateComObject" oder "CreateOleObject". Leider konnte ich dazu keine Informationen finden. Ich hoffe jemand hat eine Idee oder die Lösung.

Dank Euch im voraus und
feuchte, kühle Grüße von der Nordsee
Peter


Narses - Fr 07.05.10 14:45

Moin!

Man kann sicher hier die API quälen (oder auch sich selbst), man kann aber auch einfach AT an der Kommandozeile verwenden: ;)

Quelltext
1:
at /?                    

Damit geht das [http://www.delphi-library.de/topic_KonsolenKommando+ausfuehren+und+Ergebnis+zurueckliefern_64132.html] dann auch aus einer Delphi-Anwendung heraus. :idea:

cu
Narses


Peter18 - Fr 07.05.10 15:40

Hallo Narses,

das hatte ich zuerst auch gedacht, doch der Nachteil ist, dass Microsaft :oops: sorry Microsoft gern etwas neu macht. Da bekommt ein solches Programm schon mal einen anderen Namen oder unter 98 existiert es nicht u.s.w.. Da ist die Api schon sicherer, wie sich bei Office gezeigt hat! Die Lösung soll nämlich unter diversen Windows-Versionen funktionieren.

Trotzdem Danke und Grüße von der Nordsee
Peter


jaenicke - Fr 07.05.10 17:53

Dafür gibts von den JEDIs recht einfache Wrapper soweit ich weiß. Da lag auch nen Beispiel irgendwo unter examples\tasks oder so.

Wenn du allerdings nur Delphi 4 zur Verfügung hast, müsstest du einmal schauen ob die entsprechenden Teile der JCL dort gehen, denn die gehen insgesamt glaube ich erst ab Delphi 5.
Was die Kompatibilität angeht: Da bin ich mir nicht so sicher, dass das dann überall geht, denn mit Vista hat sich da viel geändert (endlich).

So schwierig ist das jedenfalls nicht, irgendwo hatte ich auch direkt zur API mal was gesehen glaube ich, nur wo? :gruebel:


Delete - Fr 07.05.10 19:53

Guckst Du hier:
http://delphi.icm.edu.pl/ftp/d50free/TaskSched.zip


Peter18 - Mo 10.05.10 11:25

Hallo hathor,

der Tipp war gut! Es hat Funktioniert. Danke.

Grüße von der Nordsee
Peter