home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / Idl / mstask.idl < prev    next >
Encoding:
Text File  |  2000-02-01  |  16.7 KB  |  500 lines

  1. //+----------------------------------------------------------------------------
  2. //
  3. //  Task Scheduler
  4. //
  5. //  Microsoft Windows
  6. //  Copyright (C) Microsoft Corporation, 1992 - 1996.
  7. //
  8. //  File:       mstask.idl
  9. //
  10. //  Contents:   ITaskTrigger, ITask, ITaskScheduler, IEnumWorkItems
  11. //              interfaces and related definitions
  12. //
  13. //  History:    06-Sep-95 EricB created
  14. //
  15. //-----------------------------------------------------------------------------
  16.  
  17. import "oaidl.idl";
  18. import "oleidl.idl";
  19.  
  20. // 148BD520-A2AB-11CE-B11F-00AA00530503 - Task object class ID
  21. // 148BD52A-A2AB-11CE-B11F-00AA00530503 - Task Scheduler class ID
  22. // A6B952F0-A4B1-11D0-997D-00AA006887EC - IScheduledWorkItem interface ID
  23. // 148BD524-A2AB-11CE-B11F-00AA00530503 - ITask interface ID
  24. // 148BD527-A2AB-11CE-B11F-00AA00530503 - ITaskScheduler interface ID
  25. // 148BD528-A2AB-11CE-B11F-00AA00530503 - IEnumWorkItems interface ID
  26. // 148BD52B-A2AB-11CE-B11F-00AA00530503 - ITaskTrigger interface ID
  27.  
  28. //+----------------------------------------------------------------------------
  29. //
  30. //  Datatypes
  31. //
  32. //-----------------------------------------------------------------------------
  33.  
  34. cpp_quote("#define TASK_SUNDAY       (0x1)")
  35. cpp_quote("#define TASK_MONDAY       (0x2)")
  36. cpp_quote("#define TASK_TUESDAY      (0x4)")
  37. cpp_quote("#define TASK_WEDNESDAY    (0x8)")
  38. cpp_quote("#define TASK_THURSDAY     (0x10)")
  39. cpp_quote("#define TASK_FRIDAY       (0x20)")
  40. cpp_quote("#define TASK_SATURDAY     (0x40)")
  41. cpp_quote("#define TASK_FIRST_WEEK   (1)")
  42. cpp_quote("#define TASK_SECOND_WEEK  (2)")
  43. cpp_quote("#define TASK_THIRD_WEEK   (3)")
  44. cpp_quote("#define TASK_FOURTH_WEEK  (4)")
  45. cpp_quote("#define TASK_LAST_WEEK    (5)")
  46. cpp_quote("#define TASK_JANUARY      (0x1)")
  47. cpp_quote("#define TASK_FEBRUARY     (0x2)")
  48. cpp_quote("#define TASK_MARCH        (0x4)")
  49. cpp_quote("#define TASK_APRIL        (0x8)")
  50. cpp_quote("#define TASK_MAY          (0x10)")
  51. cpp_quote("#define TASK_JUNE         (0x20)")
  52. cpp_quote("#define TASK_JULY         (0x40)")
  53. cpp_quote("#define TASK_AUGUST       (0x80)")
  54. cpp_quote("#define TASK_SEPTEMBER    (0x100)")
  55. cpp_quote("#define TASK_OCTOBER      (0x200)")
  56. cpp_quote("#define TASK_NOVEMBER     (0x400)")
  57. cpp_quote("#define TASK_DECEMBER     (0x800)")
  58.  
  59. cpp_quote("#define TASK_FLAG_INTERACTIVE                  (0x1)")
  60. cpp_quote("#define TASK_FLAG_DELETE_WHEN_DONE             (0x2)")
  61. cpp_quote("#define TASK_FLAG_DISABLED                     (0x4)")
  62. cpp_quote("#define TASK_FLAG_START_ONLY_IF_IDLE           (0x10)")
  63. cpp_quote("#define TASK_FLAG_KILL_ON_IDLE_END             (0x20)")
  64. cpp_quote("#define TASK_FLAG_DONT_START_IF_ON_BATTERIES   (0x40)")
  65. cpp_quote("#define TASK_FLAG_KILL_IF_GOING_ON_BATTERIES   (0x80)")
  66. cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_DOCKED           (0x100)")
  67. cpp_quote("#define TASK_FLAG_HIDDEN                       (0x200)")
  68. cpp_quote("#define TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET (0x400)")
  69. cpp_quote("#define TASK_FLAG_RESTART_ON_IDLE_RESUME       (0x800)")
  70. cpp_quote("#define TASK_FLAG_SYSTEM_REQUIRED              (0x1000)")
  71. cpp_quote("#define TASK_FLAG_RUN_ONLY_IF_LOGGED_ON        (0x2000)")
  72.  
  73. cpp_quote("#define TASK_TRIGGER_FLAG_HAS_END_DATE         (0x1)")
  74. cpp_quote("#define TASK_TRIGGER_FLAG_KILL_AT_DURATION_END (0x2)")
  75. cpp_quote("#define TASK_TRIGGER_FLAG_DISABLED             (0x4)")
  76.  
  77. //
  78. // 1440 = 60 mins/hour * 24 hrs/day since a trigger/TASK could run all day at
  79. // one minute intervals.
  80. //
  81.  
  82. const int TASK_MAX_RUN_TIMES = 1440;
  83.  
  84. //
  85. // The TASK_TRIGGER_TYPE field of the TASK_TRIGGER structure determines
  86. // which member of the TRIGGER_TYPE_UNION field to use.
  87. //
  88. typedef enum _TASK_TRIGGER_TYPE {
  89.     TASK_TIME_TRIGGER_ONCE            = 0,  // Ignore the Type field.
  90.     TASK_TIME_TRIGGER_DAILY           = 1,  // Use DAILY
  91.     TASK_TIME_TRIGGER_WEEKLY          = 2,  // Use WEEKLY
  92.     TASK_TIME_TRIGGER_MONTHLYDATE     = 3,  // Use MONTHLYDATE
  93.     TASK_TIME_TRIGGER_MONTHLYDOW      = 4,  // Use MONTHLYDOW
  94.     TASK_EVENT_TRIGGER_ON_IDLE        = 5,  // Ignore the Type field.
  95.     TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6,  // Ignore the Type field.
  96.     TASK_EVENT_TRIGGER_AT_LOGON       = 7   // Ignore the Type field.
  97. } TASK_TRIGGER_TYPE, *PTASK_TRIGGER_TYPE;
  98.  
  99. typedef struct _DAILY {
  100.     WORD DaysInterval;
  101. } DAILY;
  102.  
  103. typedef struct _WEEKLY {
  104.     WORD WeeksInterval;
  105.     WORD rgfDaysOfTheWeek;
  106. } WEEKLY;
  107.  
  108. typedef struct _MONTHLYDATE {
  109.     DWORD rgfDays;
  110.     WORD  rgfMonths;
  111. } MONTHLYDATE;
  112.  
  113. typedef struct _MONTHLYDOW {
  114.     WORD wWhichWeek;
  115.     WORD rgfDaysOfTheWeek;
  116.     WORD rgfMonths;
  117. } MONTHLYDOW;
  118.  
  119. typedef union _TRIGGER_TYPE_UNION {
  120.     DAILY       Daily;
  121.     WEEKLY      Weekly;
  122.     MONTHLYDATE MonthlyDate;
  123.     MONTHLYDOW  MonthlyDOW;
  124. } TRIGGER_TYPE_UNION;
  125.  
  126. typedef struct _TASK_TRIGGER {
  127.     WORD cbTriggerSize;            // Structure size.
  128.     WORD Reserved1;                // Reserved. Must be zero.
  129.     WORD wBeginYear;               // Trigger beginning date year.
  130.     WORD wBeginMonth;              // Trigger beginning date month.
  131.     WORD wBeginDay;                // Trigger beginning date day.
  132.     WORD wEndYear;                 // Optional trigger ending date year.
  133.     WORD wEndMonth;                // Optional trigger ending date month.
  134.     WORD wEndDay;                  // Optional trigger ending date day.
  135.     WORD wStartHour;               // Run bracket start time hour.
  136.     WORD wStartMinute;             // Run bracket start time minute.
  137.     DWORD MinutesDuration;         // Duration of run bracket.
  138.     DWORD MinutesInterval;         // Run bracket repetition interval.
  139.     DWORD rgFlags;                 // Trigger flags.
  140.     TASK_TRIGGER_TYPE TriggerType; // Trigger type.
  141.     TRIGGER_TYPE_UNION Type;       // Trigger data.
  142.     WORD Reserved2;                // Reserved. Must be zero.
  143.     WORD wRandomMinutesInterval;   // Maximum number of random minutes
  144.                                    // after start time.
  145. } TASK_TRIGGER, * PTASK_TRIGGER;
  146.  
  147. //+----------------------------------------------------------------------------
  148. //
  149. //  Interfaces
  150. //
  151. //-----------------------------------------------------------------------------
  152.  
  153. //+----------------------------------------------------------------------------
  154. //
  155. //  Interface:  ITaskTrigger
  156. //
  157. //  Synopsis:   Trigger object interface. A Task object may contain several
  158. //              of these.
  159. //
  160. //-----------------------------------------------------------------------------
  161. cpp_quote("// {148BD52B-A2AB-11CE-B11F-00AA00530503}")
  162. cpp_quote("DEFINE_GUID(IID_ITaskTrigger, 0x148BD52BL, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  163.  
  164. interface ITaskTrigger;
  165. [
  166.     local,
  167.     object,
  168.     uuid(148BD52B-A2AB-11CE-B11F-00AA00530503),
  169.     pointer_default(unique)
  170. ]
  171. interface ITaskTrigger : IUnknown
  172. {
  173. // Methods:
  174.     HRESULT SetTrigger(
  175.                 [in] const PTASK_TRIGGER pTrigger);
  176.  
  177.     HRESULT GetTrigger(
  178.                 [out] PTASK_TRIGGER pTrigger);
  179.  
  180.     HRESULT GetTriggerString(
  181.                 [out] LPWSTR * ppwszTrigger);
  182. };
  183.  
  184. //+----------------------------------------------------------------------------
  185. //
  186. //  Interface:  IScheduledWorkItem
  187. //
  188. //  Synopsis:   Abstract base class for any runnable work item that can be
  189. //              scheduled by the task scheduler.
  190. //
  191. //-----------------------------------------------------------------------------
  192. cpp_quote("// {a6b952f0-a4b1-11d0-997d-00aa006887ec}")
  193. cpp_quote("DEFINE_GUID(IID_IScheduledWorkItem, 0xa6b952f0L, 0xa4b1, 0x11d0, 0x99, 0x7d, 0x00, 0xaa, 0x00, 0x68, 0x87, 0xec);")
  194.  
  195. interface IScheduledWorkItem;
  196. [
  197.     local,
  198.     object,
  199.     uuid(a6b952f0-a4b1-11d0-997d-00aa006887ec),
  200.     pointer_default(unique)
  201. ]
  202. interface IScheduledWorkItem : IUnknown
  203. {
  204. // Methods concerning scheduling:
  205.     HRESULT CreateTrigger(
  206.                 [out] WORD *          piNewTrigger,
  207.                 [out] ITaskTrigger ** ppTrigger);
  208.  
  209.     HRESULT DeleteTrigger(
  210.                 [in] WORD iTrigger);
  211.  
  212.     HRESULT GetTriggerCount(
  213.                 [out] WORD * pwCount);
  214.  
  215.     HRESULT GetTrigger(
  216.                 [in]  WORD            iTrigger,
  217.                 [out] ITaskTrigger ** ppTrigger);
  218.  
  219.     HRESULT GetTriggerString(
  220.                 [in]  WORD     iTrigger,
  221.                 [out] LPWSTR * ppwszTrigger);
  222.  
  223.     HRESULT GetRunTimes(
  224.                 [in] const LPSYSTEMTIME   pstBegin,
  225.                 [in] const LPSYSTEMTIME   pstEnd,
  226.                 [in, out]  WORD *         pCount,
  227.                 [out]      LPSYSTEMTIME * rgstTaskTimes);
  228.  
  229.     HRESULT GetNextRunTime(
  230.                 [in, out] SYSTEMTIME * pstNextRun);
  231.  
  232.     HRESULT SetIdleWait(
  233.                 [in]  WORD   wIdleMinutes,
  234.                 [in]  WORD   wDeadlineMinutes);
  235.     HRESULT GetIdleWait(
  236.                 [out] WORD * pwIdleMinutes,
  237.                 [out] WORD * pwDeadlineMinutes);
  238.  
  239. // Other methods:
  240.     HRESULT Run(
  241.                 void);
  242.  
  243.     HRESULT Terminate(
  244.                 void);
  245.  
  246.     HRESULT EditWorkItem(
  247.                 [in] HWND hParent,
  248.                 [in] DWORD dwReserved);
  249.  
  250.     HRESULT GetMostRecentRunTime(
  251.                 [out] SYSTEMTIME * pstLastRun);
  252.  
  253.     HRESULT GetStatus(
  254.                 [out] HRESULT * phrStatus);
  255.  
  256.     HRESULT GetExitCode(
  257.                 [out] DWORD * pdwExitCode);
  258.  
  259. // Properties:
  260.     HRESULT SetComment(
  261.                 [in]  LPCWSTR  pwszComment);
  262.     HRESULT GetComment(
  263.                 [out] LPWSTR * ppwszComment);
  264.  
  265.     HRESULT SetCreator(
  266.                 [in]  LPCWSTR  pwszCreator);
  267.     HRESULT GetCreator(
  268.                 [out] LPWSTR * ppwszCreator);
  269.  
  270.     HRESULT SetWorkItemData(
  271.                 [in] WORD cbData,
  272.                 [in] BYTE rgbData[]);
  273.     HRESULT GetWorkItemData(
  274.                 [out] WORD *  pcbData,
  275.                 [out] BYTE ** prgbData);
  276.  
  277.     HRESULT SetErrorRetryCount(
  278.                 [in]  WORD   wRetryCount);
  279.     HRESULT GetErrorRetryCount(
  280.                 [out] WORD * pwRetryCount);
  281.  
  282.     HRESULT SetErrorRetryInterval(
  283.                 [in]  WORD   wRetryInterval);
  284.     HRESULT GetErrorRetryInterval(
  285.                 [out] WORD * pwRetryInterval);
  286.  
  287.     HRESULT SetFlags(
  288.                 [in]  DWORD   dwFlags);
  289.     HRESULT GetFlags(
  290.                 [out] DWORD * pdwFlags);
  291.  
  292.     HRESULT SetAccountInformation(
  293.                 [in]  LPCWSTR  pwszAccountName,
  294.                 [in]  LPCWSTR  pwszPassword);
  295.     HRESULT GetAccountInformation(
  296.                 [out] LPWSTR * ppwszAccountName);
  297. }
  298.  
  299. //+----------------------------------------------------------------------------
  300. //
  301. //  Interface:  ITask
  302. //
  303. //  Synopsis:   Task object interface. The primary means of task object
  304. //              manipulation.
  305. //
  306. //-----------------------------------------------------------------------------
  307. cpp_quote("// {148BD524-A2AB-11CE-B11F-00AA00530503}")
  308. cpp_quote("DEFINE_GUID(IID_ITask, 0x148BD524L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  309.  
  310. interface ITask;
  311. [
  312.     local,
  313.     object,
  314.     uuid(148BD524-A2AB-11CE-B11F-00AA00530503),
  315.     pointer_default(unique)
  316. ]
  317. interface ITask : IScheduledWorkItem
  318. {
  319. // Properties that correspond to parameters of CreateProcess:
  320.     HRESULT SetApplicationName(
  321.                 [in]  LPCWSTR  pwszApplicationName);
  322.     HRESULT GetApplicationName(
  323.                 [out] LPWSTR * ppwszApplicationName);
  324.  
  325.     HRESULT SetParameters(
  326.                 [in]  LPCWSTR  pwszParameters);
  327.     HRESULT GetParameters(
  328.                 [out] LPWSTR * ppwszParameters);
  329.  
  330.     HRESULT SetWorkingDirectory(
  331.                 [in]  LPCWSTR  pwszWorkingDirectory);
  332.     HRESULT GetWorkingDirectory(
  333.                 [out] LPWSTR * ppwszWorkingDirectory);
  334.  
  335.     HRESULT SetPriority(
  336.                 [in]  DWORD   dwPriority);
  337.     HRESULT GetPriority(
  338.                 [out] DWORD * pdwPriority);
  339.  
  340. // Other properties:
  341.     HRESULT SetTaskFlags(
  342.                 [in]  DWORD   dwFlags);
  343.     HRESULT GetTaskFlags(
  344.                 [out] DWORD * pdwFlags);
  345.  
  346.     HRESULT SetMaxRunTime(
  347.                 [in]  DWORD   dwMaxRunTimeMS);
  348.     HRESULT GetMaxRunTime(
  349.                 [out] DWORD * pdwMaxRunTimeMS);
  350. }
  351.  
  352. //+----------------------------------------------------------------------------
  353. //
  354. //  Interface:  IEnumWorkItems
  355. //
  356. //  Synopsis:   Work item object enumerator. Enumerates the work item objects
  357. //              within the Tasks folder.
  358. //
  359. //-----------------------------------------------------------------------------
  360. cpp_quote("// {148BD528-A2AB-11CE-B11F-00AA00530503}")
  361. cpp_quote("DEFINE_GUID(IID_IEnumWorkItems, 0x148BD528L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  362.  
  363. interface IEnumWorkItems;
  364. [
  365.     local,
  366.     object,
  367.     uuid(148BD528-A2AB-11CE-B11F-00AA00530503),
  368.     pointer_default(unique)
  369. ]
  370. interface IEnumWorkItems : IUnknown
  371. {
  372. // Methods:
  373.     HRESULT Next(
  374.                 [in]  ULONG     celt,
  375.                 [out] LPWSTR ** rgpwszNames,
  376.                 [out] ULONG *   pceltFetched);
  377.  
  378.     HRESULT Skip(
  379.                 [in] ULONG celt);
  380.  
  381.     HRESULT Reset(
  382.                 void);
  383.  
  384.     HRESULT Clone(
  385.                 [out] IEnumWorkItems ** ppEnumWorkItems);
  386. }
  387.  
  388. //+----------------------------------------------------------------------------
  389. //
  390. //  Interface:  ITaskScheduler
  391. //
  392. //  Synopsis:   Task Scheduler interface. Provides location transparent
  393. //              manipulation of task and/or queue objects within the Tasks
  394. //              folder.
  395. //
  396. //-----------------------------------------------------------------------------
  397. cpp_quote("// {148BD527-A2AB-11CE-B11F-00AA00530503}")
  398. cpp_quote("DEFINE_GUID(IID_ITaskScheduler, 0x148BD527L, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  399.  
  400. interface ITaskScheduler;
  401. [
  402.     local,
  403.     object,
  404.     uuid(148BD527-A2AB-11CE-B11F-00AA00530503),
  405.     pointer_default(unique)
  406. ]
  407. interface ITaskScheduler : IUnknown
  408. {
  409. // Methods:
  410.     HRESULT SetTargetComputer(
  411.                 [in] LPCWSTR pwszComputer);
  412.  
  413.     HRESULT GetTargetComputer(
  414.                 [out] LPWSTR * ppwszComputer);
  415.  
  416.     HRESULT Enum(
  417.                 [out] IEnumWorkItems ** ppEnumWorkItems);
  418.  
  419.     HRESULT Activate(
  420.                 [in]  LPCWSTR     pwszName,
  421.                 [in]  REFIID      riid,
  422.                 [out] IUnknown ** ppUnk);
  423.  
  424.     HRESULT Delete(
  425.                 [in] LPCWSTR pwszName);
  426.  
  427.     HRESULT NewWorkItem(
  428.                 [in]  LPCWSTR     pwszTaskName,
  429.                 [in]  REFCLSID    rclsid,
  430.                 [in]  REFIID      riid,
  431.                 [out] IUnknown ** ppUnk);
  432.  
  433.     HRESULT AddWorkItem(
  434.                 [in] LPCWSTR pwszTaskName,
  435.                 [in] IScheduledWorkItem * pWorkItem);
  436.  
  437.     HRESULT IsOfType(
  438.                 [in] LPCWSTR pwszName,
  439.                 [in] REFIID  riid);
  440. }
  441.  
  442. cpp_quote("EXTERN_C const CLSID CLSID_CTask;")
  443. cpp_quote("EXTERN_C const CLSID CLSID_CTaskScheduler;")
  444. cpp_quote(" ")
  445. cpp_quote("// {148BD520-A2AB-11CE-B11F-00AA00530503}")
  446. cpp_quote("DEFINE_GUID(CLSID_CTask, 0x148BD520, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  447. cpp_quote(" ")
  448. cpp_quote("// {148BD52A-A2AB-11CE-B11F-00AA00530503}")
  449. cpp_quote("DEFINE_GUID(CLSID_CTaskScheduler, 0x148BD52A, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03);")
  450. cpp_quote(" ")
  451.  
  452.  
  453. //
  454. // NOTE: Definition of HPROPSHEETPAGE is from sdk\inc\prsht.h
  455. //       Including this header file causes numerous redefinition errors.
  456. //
  457.  
  458. struct _PSP;
  459. typedef struct _PSP * HPROPSHEETPAGE;
  460.  
  461. typedef enum _TASKPAGE {
  462.     TASKPAGE_TASK     = 0,
  463.     TASKPAGE_SCHEDULE = 1,
  464.     TASKPAGE_SETTINGS = 2
  465. } TASKPAGE;
  466.  
  467. //+----------------------------------------------------------------------------
  468. //
  469. //  Interface:  IProvideTaskPage
  470. //
  471. //  Synopsis:   Task property page retrieval interface. With this interface,
  472. //              it is possible to retrieve one or more property pages
  473. //              associated with a task object. Task objects inherit this
  474. //              interface.
  475. //
  476. //-----------------------------------------------------------------------------
  477. cpp_quote("// {4086658a-cbbb-11cf-b604-00c04fd8d565}")
  478. cpp_quote("DEFINE_GUID(IID_IProvideTaskPage, 0x4086658aL, 0xcbbb, 0x11cf, 0xb6, 0x04, 0x00, 0xc0, 0x4f, 0xd8, 0xd5, 0x65);")
  479.  
  480. interface IProvideTaskPage;
  481. [
  482.     local,
  483.     object,
  484.     uuid(4086658a-cbbb-11cf-b604-00c04fd8d565),
  485.     pointer_default(unique)
  486. ]
  487. interface IProvideTaskPage : IUnknown
  488. {
  489. // Methods:
  490.     HRESULT GetPage(
  491.                 [in]  TASKPAGE         tpType,
  492.                 [in]  BOOL             fPersistChanges,
  493.                 [out] HPROPSHEETPAGE * phPage);
  494. }
  495.  
  496. cpp_quote("#define ISchedulingAgent       ITaskScheduler")
  497. cpp_quote("#define IEnumTasks             IEnumWorkItems")
  498. cpp_quote("#define IID_ISchedulingAgent   IID_ITaskScheduler")
  499. cpp_quote("#define CLSID_CSchedulingAgent CLSID_CTaskScheduler")
  500.