AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Taskplaner: job/task bearbeiten

Ein Thema von TUX_der_Pinguin · begonnen am 27. Apr 2009 · letzter Beitrag vom 29. Apr 2009
 
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Taskplaner: job/task bearbeiten

  Alt 28. Apr 2009, 09:10
So ich hab das ganze mal ausprobiert aber es will noch nicht so ganz klappen.

Ich hatte hier im forum einen Beitrag entdeckt mit dessen hilfe
ich versucht habe einen bestehenden Task zu ändern.

Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
var
  dtNextRun : TDateTime;
  bThisWeek : Boolean;
  dtInfoMsg : TDateTime;
  TaskScheduler : TJclTaskSchedule;
  bFound : Boolean;
  TaskIdx : Integer;
  piNewTrigger : Word;
  ppTrigger : ITaskTrigger;
  pTrigger : _TASK_TRIGGER;
  myYear : Word;
  myMonth : Word;
  myDay : Word;
  myTriggerTypeUnion : TRIGGER_TYPE_UNION;
  myWeekly : TWeekly;

begin
  //init
  bThisWeek := False;

  //Prüfen ob Datum vor oder nach Freitag liegt
  if DayOfTheWeek(Now) < DayFriday then bThisWeek := True;

  //Datum ermitteln an dem Backup durchgeführt werden soll
  if bThisWeek then
    dtNextRun := Now + (DayFriday - DayOfTheWeek(Now))
  else
    dtNextRun := Now + (DayFriday - DayOfTheWeek(Now)) + 7;

  //Prüfen ob die Nächste Ausführung statt finden kann (Feiertag)
  while fIsHoliday(dtNextRun, NW) do begin
    dtNextRun := dtNextRun - 1;
  end;{while}

  //ShowMessage('Nächste Ausführung am: '+FormatDateTime('ddd dd.mm.yyyy', dtNextRun));

  //Tag ermitteln an dem die Benachrichtigung (NAS einschalten) angezeigt werden muß
  dtInfoMsg := dtNextRun - 1;

  //Auf Feiertag prüfen
  while fIsHoliday(dtInfoMsg, NW) do begin
    dtInfoMsg := dtInfoMsg - 1;
  end;{while}

  //ShowMessage('Nachricht: '+FormatDateTime('ddd dd.mm.yyyy', dtInfoMsg));


  TaskScheduler := TJclTaskSchedule.Create;
  TaskScheduler.Refresh;

  //Task suchen...
  TaskIdx := 0;
  bFound := False;
  while (TaskIdx < TaskScheduler.TaskCount) and not bFound do begin
    if TaskScheduler.Tasks[TaskIdx].TaskName = 'msg.jobthen bFound := True else Inc(TaskIdx);
  end;{while}

  //Benachrichtigungs Task 'planen'
  if bFound then begin
    with TaskScheduler.Tasks[TaskIdx] do begin

      ScheduledWorkItem.GetTrigger(piNewTrigger, ppTrigger);

      DecodeDate(Now, myYear, myMonth, myDay);

      ZeroMemory(@pTrigger, SizeOf(TASK_TRIGGER));
      pTrigger.cbTriggerSize := SizeOf(TASK_TRIGGER);
      pTrigger.Reserved1 := 0;
      pTrigger.wBeginYear := myYear;
      pTrigger.wBeginMonth := myMonth;
      pTrigger.wBeginDay := myDay;
      pTrigger.wEndYear := 0;
      pTrigger.wEndMonth := 0;
      pTrigger.wEndDay := 0;
      pTrigger.wStartHour := 15;
      pTrigger.wStartMinute := 45;
      pTrigger.MinutesDuration := 0;
      pTrigger.MinutesInterval := 0;
      pTrigger.rgFlags := 0;
      pTrigger.TriggerType := TASK_TIME_TRIGGER_WEEKLY;
      MyWeekly.WeeksInterval := 1;
      MyWeekly.rgfDaysOfTheWeek := DayOfWeek(dtInfoMsg);

      MyTriggerTypeUnion.Weekly := MyWeekly;
      pTrigger.Type_ := MyTriggerTypeUnion;
      pTrigger.Reserved2 := 0;
      pTrigger.wRandomMinutesInterval := 0;

      ppTrigger.SetTrigger(pTrigger); //An dieser Stelle gibts eine Zugriffsverletztung...

      Save;
    end;{with}

  end;{if}

  TaskScheduler.Free;

end;
Ich denke es liegt noch an der Stelle wo ich versuche den "Task" bzw. den Trigger zu laden um ihn anschließend zu modifizieren.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz