2 * Task Scheduler Service interface
4 * Copyright (C) 2008 Google (Roy Shea)
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 #define threading(model)
28 #define vi_progid(str)
31 cpp_quote("#define TASK_SUNDAY 0x1")
32 cpp_quote("#define TASK_MONDAY 0x2")
33 cpp_quote("#define TASK_TUESDAY 0x4")
34 cpp_quote("#define TASK_WEDNESDAY 0x8")
35 cpp_quote("#define TASK_THURSDAY 0x10")
36 cpp_quote("#define TASK_FRIDAY 0x20")
37 cpp_quote("#define TASK_SATURDAY 0x40")
39 cpp_quote("#define TASK_FIRST_WEEK 1")
40 cpp_quote("#define TASK_SECOND_WEEK 2")
41 cpp_quote("#define TASK_THIRD_WEEK 3")
42 cpp_quote("#define TASK_FOURTH_WEEK 4")
43 cpp_quote("#define TASK_LAST_WEEK 5")
45 cpp_quote("#define TASK_JANUARY 0x1")
46 cpp_quote("#define TASK_FEBRUARY 0x2")
47 cpp_quote("#define TASK_MARCH 0x4")
48 cpp_quote("#define TASK_APRIL 0x8")
49 cpp_quote("#define TASK_MAY 0x10")
50 cpp_quote("#define TASK_JUNE 0x20")
51 cpp_quote("#define TASK_JULY 0x40")
52 cpp_quote("#define TASK_AUGUST 0x80")
53 cpp_quote("#define TASK_SEPTEMBER 0x100")
54 cpp_quote("#define TASK_OCTOBER 0x200")
55 cpp_quote("#define TASK_NOVEMBER 0x400")
56 cpp_quote("#define TASK_DECEMBER 0x800")
58 cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE 0x1")
59 cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END 0x2")
60 cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED 0x4")
63 cpp_quote("DEFINE_GUID(CLSID_CTaskScheduler, 0x148bd52a, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);")
64 cpp_quote("DEFINE_GUID(CLSID_CTask, 0x148bd520, 0xa2ab, 0x11ce, 0xb1,0x1f, 0x00,0xaa,0x00,0x53,0x05,0x03);")
70 uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
71 pointer_default(unique)
73 interface IEnumWorkItems : IUnknown
77 [out] LPWSTR **rgpwszNames,
78 [out] ULONG *pceltFetched);
86 [out] IEnumWorkItems **ppEnumWorkItems);
89 cpp_quote("#ifndef _HPROPSHEETPAGE_DEFINED")
90 typedef struct _PSP *HPROPSHEETPAGE;
91 cpp_quote("#define _HPROPSHEETPAGE_DEFINED")
97 uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
98 pointer_default(unique)
100 interface IProvideTaskPage : IUnknown
102 typedef enum _TASKPAGE {
104 TASKPAGE_SCHEDULE = 1,
105 TASKPAGE_SETTINGS = 2
109 [in] TASKPAGE tpType,
110 [in] BOOL fPersistChanges,
111 [out] HPROPSHEETPAGE *phPage);
117 uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
118 pointer_default(unique)
120 interface ITaskTrigger : IUnknown
122 typedef enum _TASK_TRIGGER_TYPE {
123 TASK_TIME_TRIGGER_ONCE = 0,
124 TASK_TIME_TRIGGER_DAILY = 1,
125 TASK_TIME_TRIGGER_WEEKLY = 2,
126 TASK_TIME_TRIGGER_MONTHLYDATE = 3,
127 TASK_TIME_TRIGGER_MONTHLYDOW = 4,
128 TASK_EVENT_TRIGGER_ON_IDLE = 5,
129 TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6,
130 TASK_EVENT_TRIGGER_AT_LOGON = 7
131 } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
133 typedef struct _DAILY {
137 typedef struct _WEEKLY {
139 WORD rgfDaysOfTheWeek;
142 typedef struct _MONTHLYDATE {
147 typedef struct _MONTHLYDOW {
149 WORD rgfDaysOfTheWeek;
153 typedef union _TRIGGER_TYPE_UNION {
156 MONTHLYDATE MonthlyDate;
157 MONTHLYDOW MonthlyDOW;
158 } TRIGGER_TYPE_UNION;
160 typedef struct _TASK_TRIGGER {
171 DWORD MinutesDuration;
172 DWORD MinutesInterval;
174 TASK_TRIGGER_TYPE TriggerType;
175 TRIGGER_TYPE_UNION Type;
177 WORD wRandomMinutesInterval;
178 } TASK_TRIGGER, *PTASK_TRIGGER;
181 [in] const PTASK_TRIGGER pTrigger);
184 [out] PTASK_TRIGGER pTrigger);
186 HRESULT GetTriggerString(
187 [out] LPWSTR *ppwszTrigger);
193 uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
194 pointer_default(unique)
196 interface IScheduledWorkItem : IUnknown
198 HRESULT CreateTrigger(
199 [out] WORD *piNewTrigger,
200 [out] ITaskTrigger **ppTrigger);
202 HRESULT DeleteTrigger(
205 HRESULT GetTriggerCount(
206 [out] WORD *plCount);
210 [out] ITaskTrigger **ppTrigger);
212 HRESULT GetTriggerString(
214 [out] LPWSTR *ppwszTrigger);
217 [in] const LPSYSTEMTIME pstBegin,
218 [in] const LPSYSTEMTIME pstEnd,
219 [in, out] WORD *pCount,
220 [out] LPSYSTEMTIME *rgstTaskTimes);
222 HRESULT GetNextRunTime(
223 [out] SYSTEMTIME *pstNextRun);
226 [in] WORD wIdleMinutes,
227 [in] WORD wDeadlineMinutes);
230 [out] WORD *pwIdleMinutes,
231 [out] WORD *pwDeadlineMinutes);
237 HRESULT EditWorkItem(
239 [in] DWORD dwReserved);
241 HRESULT GetMostRecentRunTime(
242 [out] SYSTEMTIME *pstLastRun);
245 [out] HRESULT *phrStatus);
248 [out] DWORD *pdwExitCode);
251 [in] LPCWSTR pwszComment);
254 [out] LPWSTR *ppwszComment);
257 LPCWSTR pwszCreator);
260 [out] LPWSTR *ppwszCreator);
262 HRESULT SetWorkItemData(
264 [in] BYTE rgbData[]);
266 HRESULT GetWorkItemData(
268 [out] BYTE **ppBytes);
270 HRESULT SetErrorRetryCount(
273 HRESULT GetErrorRetryCount(
274 [out] WORD *pwRetryCount);
276 HRESULT SetErrorRetryInterval(
277 WORD wRetryInterval);
279 HRESULT GetErrorRetryInterval(
280 [out] WORD *pwRetryInterval);
286 [out] DWORD *pdwFlags);
288 HRESULT SetAccountInformation(
289 [in] LPCWSTR pwszAccountName,
290 [in] LPCWSTR pwszPassword);
292 HRESULT GetAccountInformation(
293 [out] LPWSTR *ppwszAccountName);
299 uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
300 pointer_default(unique)
302 interface ITask : IScheduledWorkItem
304 HRESULT SetApplicationName(
305 [in] LPCWSTR pwszApplicationName);
307 HRESULT GetApplicationName(
308 [out] LPWSTR *ppwszApplicationName);
310 HRESULT SetParameters(
311 [in] LPCWSTR pwszParameters);
313 HRESULT GetParameters(
314 [out] LPWSTR *ppwszParameters);
316 HRESULT SetWorkingDirectory(
317 [in] LPCWSTR pwszWorkingDirectory);
319 HRESULT GetWorkingDirectory(
320 [in] LPWSTR *ppwszWorkingDirectory);
323 [in] DWORD dwPriority);
326 [out] DWORD *pdwPriority);
328 HRESULT SetTaskFlags(
331 HRESULT GetTaskFlags(
332 [out] DWORD *pdwFlags);
334 HRESULT SetMaxRunTime(
335 [in] DWORD dwMaxRunTime);
337 HRESULT GetMaxRunTime(
338 [out] DWORD *pdwMaxRunTime);
344 uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
345 pointer_default(unique)
347 interface ITaskScheduler : IUnknown
349 HRESULT SetTargetComputer(
350 [in] LPCWSTR pwszComputer);
352 HRESULT GetTargetComputer(
353 [out] LPWSTR *ppwszComputer);
356 [out] IEnumWorkItems **ppEnumTasks);
359 [in] LPCWSTR pwszName,
361 [out] IUnknown **ppunk);
364 [in] LPCWSTR pwszName);
367 [in] LPCWSTR pwszTaskName,
368 [in] REFCLSID rclsid,
370 [out] IUnknown **ppunk);
373 [in] LPCWSTR pwszTaskName,
374 [in] IScheduledWorkItem *pWorkItem);
377 [in] LPCWSTR pwszName,
383 uuid(148BD52A-A2AB-11CE-B11F-00AA00530503)
385 coclass CTaskScheduler
387 [default] interface ITaskScheduler;
393 uuid(148BD520-A2AB-11CE-B11F-00AA00530503)
397 [default] interface ITask;