408 lines
10 KiB
Plaintext
408 lines
10 KiB
Plaintext
/*
|
|
* 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_FLAG_INTERACTIVE 0x0001")
|
|
cpp_quote("#define TASK_FLAG_DELETE_WHEN_DONE 0x0002")
|
|
cpp_quote("#define TASK_FLAG_DISABLED 0x0004")
|
|
cpp_quote("#define TASK_FLAG_START_ONLY_IF_IDLE 0x0010")
|
|
cpp_quote("#define TASK_FLAG_KILL_ON_IDLE_END 0x0020")
|
|
cpp_quote("#define TASK_FLAG_DONT_START_IF_ON_BATTERIES 0x0040")
|
|
cpp_quote("#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES 0x0080")
|
|
cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_DOCKED 0x0100")
|
|
cpp_quote("#define TASK_FLAG_HIDDEN 0x0200")
|
|
cpp_quote("#define TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET 0x0400")
|
|
cpp_quote("#define TASK_FLAG_RESTART_ON_IDLE_RESUME 0x0800")
|
|
cpp_quote("#define TASK_FLAG_SYSTEM_REQUIRED 0x1000")
|
|
cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_LOGGED_ON 0x2000")
|
|
|
|
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;
|
|
}
|