|  | /* | 
|  | * Task Scheduler Service interface | 
|  | * | 
|  | * Copyright (C) 2008 Google (Roy Shea) | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | * | 
|  | */ | 
|  |  | 
|  | import "oaidl.idl"; | 
|  | import "oleidl.idl"; | 
|  |  | 
|  | cpp_quote("#define TASK_SUNDAY 0x1") | 
|  | cpp_quote("#define TASK_MONDAY 0x2") | 
|  | cpp_quote("#define TASK_TUESDAY 0x4") | 
|  | cpp_quote("#define TASK_WEDNESDAY 0x8") | 
|  | cpp_quote("#define TASK_THURSDAY 0x10") | 
|  | cpp_quote("#define TASK_FRIDAY 0x20") | 
|  | cpp_quote("#define TASK_SATURDAY 0x40") | 
|  |  | 
|  | cpp_quote("#define TASK_FIRST_WEEK 1") | 
|  | cpp_quote("#define TASK_SECOND_WEEK 2") | 
|  | cpp_quote("#define TASK_THIRD_WEEK 3") | 
|  | cpp_quote("#define TASK_FOURTH_WEEK 4") | 
|  | cpp_quote("#define TASK_LAST_WEEK 5") | 
|  |  | 
|  | cpp_quote("#define TASK_JANUARY 0x1") | 
|  | cpp_quote("#define TASK_FEBRUARY 0x2") | 
|  | cpp_quote("#define TASK_MARCH 0x4") | 
|  | cpp_quote("#define TASK_APRIL 0x8") | 
|  | cpp_quote("#define TASK_MAY 0x10") | 
|  | cpp_quote("#define TASK_JUNE 0x20") | 
|  | cpp_quote("#define TASK_JULY 0x40") | 
|  | cpp_quote("#define TASK_AUGUST 0x80") | 
|  | cpp_quote("#define TASK_SEPTEMBER 0x100") | 
|  | cpp_quote("#define TASK_OCTOBER 0x200") | 
|  | cpp_quote("#define TASK_NOVEMBER 0x400") | 
|  | cpp_quote("#define TASK_DECEMBER 0x800") | 
|  |  | 
|  | cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1") | 
|  | cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2") | 
|  | cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED 0x4") | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(148BD528-A2AB-11CE-B11F-00AA00530503), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IEnumWorkItems : IUnknown | 
|  | { | 
|  | HRESULT Next( | 
|  | [in]   ULONG celt, | 
|  | [out]  LPWSTR **rgpwszNames, | 
|  | [out]  ULONG *pceltFetched); | 
|  |  | 
|  | HRESULT Skip( | 
|  | [in]  ULONG celt); | 
|  |  | 
|  | HRESULT Reset(); | 
|  |  | 
|  | HRESULT Clone( | 
|  | [out]  IEnumWorkItems **ppEnumWorkItems); | 
|  | } | 
|  |  | 
|  | cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED") | 
|  | typedef struct _PSP *HPROPSHEETPAGE; | 
|  | cpp_quote("#define _HPROPSHEETPAGE_DEFINED") | 
|  | cpp_quote("#endif") | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(4086658a-cbbb-11cf-b604-00c04fd8d565), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IProvideTaskPage : IUnknown | 
|  | { | 
|  | typedef enum _TASKPAGE { | 
|  | TASKPAGE_TASK       = 0, | 
|  | TASKPAGE_SCHEDULE   = 1, | 
|  | TASKPAGE_SETTINGS   = 2 | 
|  | } TASKPAGE; | 
|  |  | 
|  | HRESULT GetPage( | 
|  | [in]   TASKPAGE tpType, | 
|  | [in]   BOOL fPersistChanges, | 
|  | [out]  HPROPSHEETPAGE *phPage); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(148BD52B-A2AB-11CE-B11F-00AA00530503), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITaskTrigger : IUnknown | 
|  | { | 
|  | typedef enum _TASK_TRIGGER_TYPE { | 
|  | TASK_TIME_TRIGGER_ONCE              = 0, | 
|  | TASK_TIME_TRIGGER_DAILY             = 1, | 
|  | TASK_TIME_TRIGGER_WEEKLY            = 2, | 
|  | TASK_TIME_TRIGGER_MONTHLYDATE       = 3, | 
|  | TASK_TIME_TRIGGER_MONTHLYDOW        = 4, | 
|  | TASK_EVENT_TRIGGER_ON_IDLE          = 5, | 
|  | TASK_EVENT_TRIGGER_AT_SYSTEMSTART   = 6, | 
|  | TASK_EVENT_TRIGGER_AT_LOGON         = 7 | 
|  | } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE; | 
|  |  | 
|  | typedef struct _DAILY { | 
|  | WORD DaysInterval; | 
|  | } DAILY; | 
|  |  | 
|  | typedef struct _WEEKLY { | 
|  | WORD WeeksInterval; | 
|  | WORD rgfDaysOfTheWeek; | 
|  | } WEEKLY; | 
|  |  | 
|  | typedef struct _MONTHLYDATE { | 
|  | DWORD rgfDays; | 
|  | WORD rgfMonths; | 
|  | } MONTHLYDATE; | 
|  |  | 
|  | typedef struct _MONTHLYDOW { | 
|  | WORD wWhichWeek; | 
|  | WORD rgfDaysOfTheWeek; | 
|  | WORD rgfMonths; | 
|  | } MONTHLYDOW; | 
|  |  | 
|  | typedef union _TRIGGER_TYPE_UNION { | 
|  | DAILY Daily; | 
|  | WEEKLY Weekly; | 
|  | MONTHLYDATE MonthlyDate; | 
|  | MONTHLYDOW MonthlyDOW; | 
|  | } TRIGGER_TYPE_UNION; | 
|  |  | 
|  | typedef struct _TASK_TRIGGER { | 
|  | WORD cbTriggerSize; | 
|  | WORD Reserved1; | 
|  | WORD wBeginYear; | 
|  | WORD wBeginMonth; | 
|  | WORD wBeginDay; | 
|  | WORD wEndYear; | 
|  | WORD wEndMonth; | 
|  | WORD wEndDay; | 
|  | WORD wStartHour; | 
|  | WORD wStartMinute; | 
|  | DWORD MinutesDuration; | 
|  | DWORD MinutesInterval; | 
|  | DWORD rgFlags; | 
|  | TASK_TRIGGER_TYPE TriggerType; | 
|  | TRIGGER_TYPE_UNION Type; | 
|  | WORD Reserved2; | 
|  | WORD wRandomMinutesInterval; | 
|  | } TASK_TRIGGER, *PTASK_TRIGGER; | 
|  |  | 
|  | HRESULT SetTrigger( | 
|  | [in]  const PTASK_TRIGGER pTrigger); | 
|  |  | 
|  | HRESULT GetTrigger( | 
|  | [out]  PTASK_TRIGGER pTrigger); | 
|  |  | 
|  | HRESULT GetTriggerString( | 
|  | [out]  LPWSTR *ppwszTrigger); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface IScheduledWorkItem : IUnknown | 
|  | { | 
|  | HRESULT CreateTrigger( | 
|  | [out]  WORD *piNewTrigger, | 
|  | [out]  ITaskTrigger **ppTrigger); | 
|  |  | 
|  | HRESULT DeleteTrigger( | 
|  | [in]  WORD iTrigger); | 
|  |  | 
|  | HRESULT GetTriggerCount( | 
|  | [out]  WORD *plCount); | 
|  |  | 
|  | HRESULT GetTrigger( | 
|  | [in]   WORD iTrigger, | 
|  | [out]  ITaskTrigger **ppTrigger); | 
|  |  | 
|  | HRESULT GetTriggerString( | 
|  | [in]   WORD iTrigger, | 
|  | [out]  LPWSTR *ppwszTrigger); | 
|  |  | 
|  | HRESULT GetRunTimes( | 
|  | [in]       const LPSYSTEMTIME pstBegin, | 
|  | [in]       const LPSYSTEMTIME pstEnd, | 
|  | [in, out]  WORD *pCount, | 
|  | [out]      LPSYSTEMTIME *rgstTaskTimes); | 
|  |  | 
|  | HRESULT GetNextRunTime( | 
|  | [out]  SYSTEMTIME *pstNextRun); | 
|  |  | 
|  | HRESULT SetIdleWait( | 
|  | [in]  WORD wIdleMinutes, | 
|  | [in]  WORD wDeadlineMinutes); | 
|  |  | 
|  | HRESULT GetIdleWait( | 
|  | [out]  WORD *pwIdleMinutes, | 
|  | [out]  WORD *pwDeadlineMinutes); | 
|  |  | 
|  | HRESULT Run(); | 
|  |  | 
|  | HRESULT Terminate(); | 
|  |  | 
|  | HRESULT EditWorkItem( | 
|  | [in]  HWND hParent, | 
|  | [in]  DWORD dwReserved); | 
|  |  | 
|  | HRESULT GetMostRecentRunTime( | 
|  | [out]  SYSTEMTIME *pstLastRun); | 
|  |  | 
|  | HRESULT GetStatus( | 
|  | [out]  HRESULT *phrStatus); | 
|  |  | 
|  | HRESULT GetExitCode( | 
|  | [out]  DWORD *pdwExitCode); | 
|  |  | 
|  | HRESULT SetComment( | 
|  | [in]  LPCWSTR pwszComment); | 
|  |  | 
|  | HRESULT GetComment( | 
|  | [out]  LPWSTR *ppwszComment); | 
|  |  | 
|  | HRESULT SetCreator( | 
|  | LPCWSTR pwszCreator); | 
|  |  | 
|  | HRESULT GetCreator( | 
|  | [out]  LPWSTR *ppwszCreator); | 
|  |  | 
|  | HRESULT SetWorkItemData( | 
|  | [in]  WORD cBytes, | 
|  | [in]  BYTE rgbData[]); | 
|  |  | 
|  | HRESULT GetWorkItemData( | 
|  | [out]  WORD *pcBytes, | 
|  | [out]  BYTE **ppBytes); | 
|  |  | 
|  | HRESULT SetErrorRetryCount( | 
|  | WORD wRetryCount); | 
|  |  | 
|  | HRESULT GetErrorRetryCount( | 
|  | [out]  WORD *pwRetryCount); | 
|  |  | 
|  | HRESULT SetErrorRetryInterval( | 
|  | WORD wRetryInterval); | 
|  |  | 
|  | HRESULT GetErrorRetryInterval( | 
|  | [out]  WORD *pwRetryInterval); | 
|  |  | 
|  | HRESULT SetFlags( | 
|  | DWORD dwFlags); | 
|  |  | 
|  | HRESULT GetFlags( | 
|  | [out]  DWORD *pdwFlags); | 
|  |  | 
|  | HRESULT SetAccountInformation( | 
|  | [in]  LPCWSTR pwszAccountName, | 
|  | [in]  LPCWSTR pwszPassword); | 
|  |  | 
|  | HRESULT GetAccountInformation( | 
|  | [out]  LPWSTR *ppwszAccountName); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(148BD524-A2AB-11CE-B11F-00AA00530503), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITask : IScheduledWorkItem | 
|  | { | 
|  | HRESULT SetApplicationName( | 
|  | [in]  LPCWSTR pwszApplicationName); | 
|  |  | 
|  | HRESULT GetApplicationName( | 
|  | [out]  LPWSTR *ppwszApplicationName); | 
|  |  | 
|  | HRESULT SetParameters( | 
|  | [in]  LPCWSTR pwszParameters); | 
|  |  | 
|  | HRESULT GetParameters( | 
|  | [out]  LPWSTR *ppwszParameters); | 
|  |  | 
|  | HRESULT SetWorkingDirectory( | 
|  | [in]  LPCWSTR pwszWorkingDirectory); | 
|  |  | 
|  | HRESULT GetWorkingDirectory( | 
|  | [in]  LPWSTR *ppwszWorkingDirectory); | 
|  |  | 
|  | HRESULT SetPriority( | 
|  | [in]  DWORD dwPriority); | 
|  |  | 
|  | HRESULT GetPriority( | 
|  | [out]  DWORD *pdwPriority); | 
|  |  | 
|  | HRESULT SetTaskFlags( | 
|  | [in]  DWORD dwFlags); | 
|  |  | 
|  | HRESULT GetTaskFlags( | 
|  | [out]  DWORD *pdwFlags); | 
|  |  | 
|  | HRESULT SetMaxRunTime( | 
|  | [in]  DWORD dwMaxRunTime); | 
|  |  | 
|  | HRESULT GetMaxRunTime( | 
|  | [out]  DWORD *pdwMaxRunTime); | 
|  | } | 
|  |  | 
|  | [ | 
|  | local, | 
|  | object, | 
|  | uuid(148BD527-A2AB-11CE-B11F-00AA00530503), | 
|  | pointer_default(unique) | 
|  | ] | 
|  | interface ITaskScheduler : IUnknown | 
|  | { | 
|  | HRESULT SetTargetComputer( | 
|  | [in]  LPCWSTR pwszComputer); | 
|  |  | 
|  | HRESULT GetTargetComputer( | 
|  | [out]  LPWSTR *ppwszComputer); | 
|  |  | 
|  | HRESULT Enum( | 
|  | [out]  IEnumWorkItems **ppEnumTasks); | 
|  |  | 
|  | HRESULT Activate( | 
|  | [in]   LPCWSTR pwszName, | 
|  | [in]   REFIID riid, | 
|  | [out]  IUnknown **ppunk); | 
|  |  | 
|  | HRESULT Delete( | 
|  | [in]  LPCWSTR pwszName); | 
|  |  | 
|  | HRESULT NewWorkItem( | 
|  | [in]   LPCWSTR pwszTaskName, | 
|  | [in]   REFCLSID rclsid, | 
|  | [in]   REFIID riid, | 
|  | [out]  IUnknown **ppunk); | 
|  |  | 
|  | HRESULT AddWorkItem( | 
|  | [in]  LPCWSTR pwszTaskName, | 
|  | [in]  IScheduledWorkItem *pWorkItem); | 
|  |  | 
|  | HRESULT IsOfType( | 
|  | [in]  LPCWSTR pwszName, | 
|  | [in]  REFIID riid); | 
|  | } | 
|  |  | 
|  | [ | 
|  | uuid(148BD52A-A2AB-11CE-B11F-00AA00530503) | 
|  | ] | 
|  | coclass CTaskScheduler | 
|  | { | 
|  | [default] interface ITaskScheduler; | 
|  | }; | 
|  |  | 
|  |  | 
|  | [ | 
|  | uuid(148BD520-A2AB-11CE-B11F-00AA00530503) | 
|  | ] | 
|  | coclass CTask | 
|  | { | 
|  | [default] interface ITask; | 
|  | }; |