| /* |
| * 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"; |
| |
| #ifndef __WIDL__ |
| #define threading(model) |
| #define progid(str) |
| #define vi_progid(str) |
| #endif |
| |
| 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); |
| } |
| |
| [ |
| threading(both), |
| uuid(148BD52A-A2AB-11CE-B11F-00AA00530503) |
| ] |
| coclass CTaskScheduler |
| { |
| [default] interface ITaskScheduler; |
| }; |
| |
| |
| [ |
| threading(both), |
| uuid(148BD520-A2AB-11CE-B11F-00AA00530503) |
| ] |
| coclass CTask |
| { |
| [default] interface ITask; |
| }; |