Einzelnen Beitrag anzeigen

Xanadu

Registriert seit: 8. Mai 2005
Ort: Schwäbisch Gmünd
20 Beiträge
 
Delphi 5 Enterprise
 

Re: Programm in geplante Tasks eintragen

  Alt 28. Jun 2005, 22:20
Bei mir läuft TTaskScheduler gut. Hänge die Version die bei mir unter Delphi 5 tut dazu.

Das ganze läuft auch remote super um auf einen anderen Netzpc Tasks zu Schedulen (bsp. \\MyClientPC). Damit time ich ca. 50 TV-Aufnahmen pro Woche auf meinem PC-VCR mit Hauppauge-Karte und check auch auf etwaige Zeitüberschneidungen.

Delphi-Quellcode:
constructor TTaskScheduler.Create;
...
  // Changed by Bernd Linthe to connect to a different computers scheduler
  if FAgent.SetTargetComputer(StrToWide('\\' + Account)) <> S_OK then
    if FAgent.SetTargetComputer(StrToWide('\\' + GetLocalComputerName)) <> S_OK then
      showmessage('WHOOPS! Computername fehlt!');
...
Das Einzige Problem das ich mit TTaskScheduler habe ist, dass die Flags TASK_FLAG_RESTART_ON_IDLE_RESUME = ($800) und TASK_FLAG_SYSTEM_REQUIRED = ($1000) nicht gesetzt werden. Habe dazu folgendes in TaskSched.pas geändert, tut aber nicht. Das Häkchen "Computer zum Ausführen des Tasks reaktivieren" muss ich noch MTV (=mit te vingers) setzen und das nervt ein wenig:

Delphi-Quellcode:
// Additional by Bernd Linthe
function TTaskSchedulerTask.GetRestartOnIdleResume : Boolean;
var
  Flags : DWORD;
begin
  GetITask.GetTaskFlags(Flags);
  Result := (Flags and TASK_FLAG_RESTART_ON_IDLE_RESUME) = 0;
end;

//Additional by Bernd Linthe
procedure TTaskSchedulerTask.SetRestartOnIdleResume(Value : Boolean);
var
  Flags : DWORD;
  iiTask : ITask;
begin
  iiTask := GetITask;

  iiTask.GetTaskFlags(Flags);

  if not Value then
    Flags := Flags or TASK_FLAG_RESTART_ON_IDLE_RESUME
  else
    Flags := Flags and (not TASK_FLAG_RESTART_ON_IDLE_RESUME);

  iiTask.SetTaskFlags(Flags);
  Tasks.ISave(iiTask);
end;

// Additional by Bernd Linthe
function TTaskSchedulerTask.GetSystemRequired : Boolean;
var
  Flags : DWORD;
begin
  GetITask.GetTaskFlags(Flags);
  Result := (Flags and TASK_FLAG_SYSTEM_REQUIRED) = 0;
end;

//Additional by Bernd Linthe
procedure TTaskSchedulerTask.SetSystemRequired(Value : Boolean);
var
  Flags : DWORD;
  iiTask : ITask;
begin
  iiTask := GetITask;

  iiTask.GetTaskFlags(Flags);

  if not Value then
    Flags := Flags or TASK_FLAG_SYSTEM_REQUIRED
  else
    Flags := Flags and (not TASK_FLAG_SYSTEM_REQUIRED);

  iiTask.SetTaskFlags(Flags);
  Tasks.ISave(iiTask);
end;
Vielleicht hat da noch jemand nen Tipp.

Have fun with it - Xanadu
Angehängte Dateien
Dateityp: zip taskscheduler_187.zip (27,4 KB, 107x aufgerufen)
  Mit Zitat antworten Zitat