public Dev2MonthlyTrigger(ITaskServiceConvertorFactory taskServiceConvertorFactory, MonthlyTrigger instance)
     : base(taskServiceConvertorFactory, instance)
 {
 }
Exemplo n.º 2
0
        public override string Write()
        {
            if (Request == null)
            {
                throw new ArgumentNullException("Request");
            }

            int executed = -1;

            Texaco.Database.IDataCommand db = dbManager.GetDatabase("smsgw");
            string scheduleID = GenerateID();
            string seqNbr     = GetID();

            executed = db.Execute("InsertQueueWorkItem", new
            {
                SeqNbr     = seqNbr,
                Command    = this.Request.QueueWorkItem.Command,
                ScheduleID = scheduleID == null ? "" : scheduleID,
                Created    = this.Request.QueueWorkItem.Created,
                Enabled    = Convert.ToInt32(this.Request.QueueWorkItem.Enabled)
            });

            if (executed > 0 && !string.IsNullOrEmpty(scheduleID))
            {
                switch (scheduleID.Substring(0, 1))
                {
                case "D":
                    DailyTrigger dailyTrigger = (DailyTrigger)this.Request.QueueWorkItem.Schedule;
                    executed = db.Execute("InsertDailyTrigger", new
                    {
                        ID          = scheduleID,
                        RecursEvery = dailyTrigger.RecursEvery
                    });
                    break;

                case "W":
                    WeeklyTrigger weeklyTrigger = (WeeklyTrigger)this.Request.QueueWorkItem.Schedule;
                    executed = db.Execute("InsertWeeklyTrigger", new
                    {
                        ID          = scheduleID,
                        RecursEvery = weeklyTrigger.RecursEvery,
                        Sunday      = Convert.ToInt32(weeklyTrigger.Sunday),
                        Monday      = Convert.ToInt32(weeklyTrigger.Monday),
                        Tuesday     = Convert.ToInt32(weeklyTrigger.Tuesday),
                        Wednesday   = Convert.ToInt32(weeklyTrigger.Wednesday),
                        Thursday    = Convert.ToInt32(weeklyTrigger.Thursday),
                        Friday      = Convert.ToInt32(weeklyTrigger.Friday),
                        Saturday    = Convert.ToInt32(weeklyTrigger.Saturday)
                    });
                    break;

                case "M":
                    MonthlyTrigger monthlyTrigger = (MonthlyTrigger)this.Request.QueueWorkItem.Schedule;
                    executed = db.Execute("InsertMonthlyTrigger", new
                    {
                        ID        = scheduleID,
                        Days      = monthlyTrigger.Days,
                        January   = monthlyTrigger.January,
                        February  = monthlyTrigger.February,
                        March     = monthlyTrigger.March,
                        April     = monthlyTrigger.April,
                        May       = monthlyTrigger.May,
                        June      = monthlyTrigger.June,
                        July      = monthlyTrigger.July,
                        August    = monthlyTrigger.August,
                        September = monthlyTrigger.September,
                        October   = monthlyTrigger.October,
                        November  = monthlyTrigger.November,
                        December  = monthlyTrigger.December
                    });
                    break;
                }
            }

            db.Close();

            if (executed == 1)
            {
                return(seqNbr);
            }
            else
            {
                return(string.Empty);
            }
        }
Exemplo n.º 3
0
        void SaveTask()
        {
            bool isNewTask = true;

            try
            {
                var            service = new TaskService();
                TaskDefinition td      = service.NewTask();
                Microsoft.Win32.TaskScheduler.TriggerCollection trgCollection;
                var oldTriggerDate = new DateTime();

                Task task = service.FindTask(MainWindowViewModel.FreeDriverScoutTaskName);

                if (task != null)
                {
                    isNewTask      = false;
                    oldTriggerDate = task.Definition.Triggers.Count > 0 ? task.Definition.Triggers[0].StartBoundary.Date : DateTime.Today;
                    task.Definition.Triggers.Clear();
                    trgCollection = task.Definition.Triggers;
                }
                else
                {
                    td.RegistrationInfo.Description = WPFLocalizeExtensionHelpers.GetUIString("WindowsTaskRegistrationInfo");
                    td.Settings.Enabled             = true;
                    td.Actions.Add(new ExecAction(Environment.CurrentDirectory + @"\1Click.exe"));
                    trgCollection = td.Triggers;
                }

                TimeSpan selectedTime = TimeSpan.Parse(((ComboBoxItem)AutoScanTime.SelectedValue).Content.ToString());
                switch (AutoScanPeriod.SelectedIndex)
                {
                case (int)Schedule.Daily:
                {
                    var dTrigger = new DailyTrigger {
                        DaysInterval = 1
                    };
                    if (isNewTask)
                    {
                        dTrigger.StartBoundary = DateTime.Today.Date + selectedTime;
                    }
                    else
                    {
                        dTrigger.StartBoundary = oldTriggerDate + selectedTime;
                    }

                    trgCollection.Add(dTrigger);
                    break;
                }

                case (int)Schedule.Weekly:
                {
                    var wTrigger = new WeeklyTrigger();
                    switch (AutoScanDay.SelectedIndex)
                    {
                    case (int)DayOfWeek.Monday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Monday;
                        break;
                    }

                    case (int)DayOfWeek.Tuesday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Tuesday;
                        break;
                    }

                    case (int)DayOfWeek.Wednesday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Wednesday;
                        break;
                    }

                    case (int)DayOfWeek.Thursday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Thursday;
                        break;
                    }

                    case (int)DayOfWeek.Friday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Friday;
                        break;
                    }

                    case (int)DayOfWeek.Saturday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Saturday;
                        break;
                    }

                    case (int)DayOfWeek.Sunday:
                    {
                        wTrigger.DaysOfWeek = DaysOfTheWeek.Sunday;
                        break;
                    }
                    }
                    trgCollection.Add(wTrigger);
                    foreach (WeeklyTrigger trg in trgCollection)
                    {
                        if (isNewTask)
                        {
                            trg.StartBoundary = DateTime.Today.Date + selectedTime;
                        }
                        else
                        {
                            trg.StartBoundary = oldTriggerDate + selectedTime;
                        }
                        trg.WeeksInterval = 1;
                    }
                    break;
                }

                case (int)Schedule.Monthly:
                {
                    var mTrigger = new MonthlyTrigger();
                    if (isNewTask)
                    {
                        mTrigger.StartBoundary = DateTime.Today.Date + selectedTime;
                    }
                    else
                    {
                        mTrigger.StartBoundary = oldTriggerDate + selectedTime;
                    }
                    mTrigger.MonthsOfYear = MonthsOfTheYear.AllMonths;
                    mTrigger.DaysOfMonth  = new int[] { Int16.Parse(((ComboBoxItem)AutoScanDate.SelectedValue).Content.ToString()) };
                    trgCollection.Add(mTrigger);
                    break;
                }
                }

                // Register the task in the root folder
                if (isNewTask)
                {
                    service.RootFolder.RegisterTaskDefinition(MainWindowViewModel.FreeDriverScoutTaskName, td);
                }
                else
                {
                    task.RegisterChanges();
                }

                TaskManager.UpdateTaskStatus(MainWindowViewModel.FreeDriverScoutTaskName, AutoScan.IsChecked == true);
            }
            catch { }
        }
Exemplo n.º 4
0
        public static bool CreateScheduleTask(string taskName, string description, bool runAtStartup, string executionPeriod)
        {
            bool result = false;

            try
            {
                using (TaskService ts = new TaskService())
                {
                    // Create a new task definition for the local machine and assign properties
                    TaskDefinition td = TaskService.Instance.NewTask();
                    td.RegistrationInfo.Description        = description;
                    td.Settings.DisallowStartIfOnBatteries = false;
                    td.Settings.StopIfGoingOnBatteries     = false;
                    td.Settings.RunOnlyIfNetworkAvailable  = true;
                    td.Settings.MultipleInstances          = TaskInstancesPolicy.StopExisting;

                    // Create a trigger that fires when log in
                    if (runAtStartup)
                    {
                        LogonTrigger lt = new LogonTrigger();
                        td.Triggers.Add(lt);

                        //Creating boot trigger that fires 2 minutes after the system starts.
                        //---NO LONGER NECESSARY

                        /*BootTrigger bt = new BootTrigger();
                         * bt.Delay = TimeSpan.FromMinutes(2);
                         * td.Triggers.Add(bt);*/
                    }

                    switch (executionPeriod)
                    {
                    default:
                    case "Every Day":
                        // Create a trigger that runs every day at 9:05.
                        DailyTrigger dt = new DailyTrigger();
                        dt.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5);
                        dt.DaysInterval  = 1;
                        td.Triggers.Add(dt);
                        break;

                    case "Every Week":
                        WeeklyTrigger wt = new WeeklyTrigger();
                        wt.StartBoundary = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5);
                        wt.DaysOfWeek    = DaysOfTheWeek.Monday;
                        wt.WeeksInterval = 1;
                        td.Triggers.Add(wt);
                        break;

                    case "Every Month":
                        MonthlyTrigger mt = new MonthlyTrigger();
                        mt.StartBoundary       = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5);
                        mt.RunOnLastDayOfMonth = true;
                        mt.MonthsOfYear        = MonthsOfTheYear.AllMonths;
                        td.Triggers.Add(mt);
                        break;

                    case "Every 3 Months":
                        MonthlyTrigger mt2 = new MonthlyTrigger();
                        mt2.StartBoundary       = DateTime.Today + TimeSpan.FromHours(9) + TimeSpan.FromMinutes(5);
                        mt2.RunOnLastDayOfMonth = true;
                        mt2.MonthsOfYear        = MonthsOfTheYear.January | MonthsOfTheYear.March | MonthsOfTheYear.May | MonthsOfTheYear.July | MonthsOfTheYear.September | MonthsOfTheYear.November;
                        td.Triggers.Add(mt2);
                        break;

                    case "Never More":
                        ts.RootFolder.DeleteTask(taskName, false);
                        result = true;
                        return(result);
                    }


                    //string programFiles = Environment.ExpandEnvironmentVariables("%ProgramW6432%");
                    string workingDirectory = string.Format(@"{0}\{1}", Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%"), "Bing Wallpaper");
                    string programUri       = string.Format(@"{0}\{1}", workingDirectory, "BingWallpaper.exe");

                    // Create an action that will launch Notepad whenever the trigger fires
                    td.Actions.Add(programUri, null, workingDirectory);

                    // Register the task in the root folder of the local machine
                    ts.RootFolder.RegisterTaskDefinition(taskName, td);
                    result = true;
                }
            }
            catch { }
            return(result);
        }
Exemplo n.º 5
0
        } // GetDuration

        private void SetSchedule(TaskDefinition definition, RecordSchedule recordSchedule)
        {
            switch (recordSchedule.Kind)
            {
            case RecordScheduleKind.RightNow:
            {
                var rightNow = new TimeTrigger();
                rightNow.EndBoundary = DateTime.Now.TruncateToSeconds() + TotalRecordTime + new TimeSpan(0, 1, 0);

                definition.Triggers.Add(rightNow);
                break;
            }         // case RecordScheduleKind.RightNow

            case RecordScheduleKind.OneTime:
            {
                var oneTime  = new TimeTrigger();
                var schedule = (RecordOneTime)recordSchedule;
                oneTime.StartBoundary = schedule.StartDate - StartSafetyMargin;
                oneTime.EndBoundary   = schedule.StartDate + TotalRecordTime;

                definition.Triggers.Add(oneTime);
                break;
            }         // case RecordScheduleKind.OneTime

            case RecordScheduleKind.Daily:
            {
                var daily    = new DailyTrigger();
                var schedule = (RecordDaily)recordSchedule;
                daily.StartBoundary = schedule.StartDate - StartSafetyMargin;
                if (schedule.ExpiryDate.HasValue)
                {
                    daily.EndBoundary = schedule.ExpiryDate.Value;
                }         // if
                daily.DaysInterval = schedule.RecurEveryDays;

                definition.Triggers.Add(daily);
                break;
            }         // case RecordScheduleKind.Daily

            case RecordScheduleKind.Weekly:
            {
                var weekly   = new WeeklyTrigger();
                var schedule = (RecordWeekly)recordSchedule;
                weekly.StartBoundary = schedule.StartDate - StartSafetyMargin;
                if (schedule.ExpiryDate.HasValue)
                {
                    weekly.EndBoundary = schedule.ExpiryDate.Value;
                }         // if
                weekly.WeeksInterval = schedule.RecurEveryWeeks;
                weekly.DaysOfWeek    = GetDaysOfTheWeek(schedule.WeekDays);

                definition.Triggers.Add(weekly);
                break;
            }         // case RecordScheduleKind.Weekly

            case RecordScheduleKind.Monthly:
            {
                var monthly  = new MonthlyTrigger();
                var schedule = (RecordMonthly)recordSchedule;
                monthly.StartBoundary = schedule.StartDate - StartSafetyMargin;
                if (schedule.ExpiryDate.HasValue)
                {
                    monthly.EndBoundary = schedule.ExpiryDate.Value;
                }         // if

                throw new NotImplementedException();
            }         // case RecordScheduleKind.Monthly

            default:
                throw new IndexOutOfRangeException();
            } // switch
        }     // SetSchedule