ITask (Interfaces)
Last changed: -203.167.226.133

.
Summary
There is some helper code at the bottom, for encapsulating the use of IEnumWorkItems, creating the TASK_TRIGGER structure (used by ITaskTrigger), and creating ITaskScheduler. Not all methods have been tested, so be careful!

C# Definition:

    [Guid("148BD524-A2AB-11CE-B11F-00AA00530503"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    interface ITask : IScheduledWorkItem
    {
    // Inherited from IScheduledWorkItem
    new int CreateTrigger(                      out ushort  iTrigger,
                [MarshalAs(UnmanagedType.IUnknown)] out object  trigger);
    new int DeleteTrigger(                      ushort      iTrigger);
    new int GetTriggerCount(                    out ushort  iTriggerCount);
    new int GetTrigger(                     ushort      iTrigger,
                [MarshalAs(UnmanagedType.IUnknown)] out object  trigger);

    new int GetTriggerString(                   ushort      iTrigger,
                [MarshalAs(UnmanagedType.LPWStr)]   out string  trigger);

    new int GetRunTimes(                    ref SYSTEMTIME pstBegin,
                                    ref SYSTEMTIME pstEnd,
                                    out ushort     count,
                                    out SYSTEMTIME rgstTaskTimes);

    new int GetNextRunTime(                     ref SYSTEMTIME pstNextRun);
    new int SetIdleWait(                    ushort     wIdleMinutes,
                                    ushort     wDeadlineMinutes);
    new int GetIdleWait(                    out ushort     wIdleMinutes,
                                    out ushort     wDeadlineMinutes);
    new int Run();
    new int Terminate( );
    new int EditWorkItem(                       IntPtr     hParent,
                                    uint       dwReserved);
    new int GetMostRecentRunTime(                   out SYSTEMTIME pstLastRun);
    new int GetStatus(                      out uint       hrStatus);
    new int GetExitCode(                    out uint       dwExitCode);
    new int SetComment(       [MarshalAs(UnmanagedType.LPWStr)] string     Comment);
    new int GetComment(       [MarshalAs(UnmanagedType.LPWStr)] out string     Comment);
    new int SetCreator(       [MarshalAs(UnmanagedType.LPWStr)] string     Creator);
    new int GetCreator(       [MarshalAs(UnmanagedType.LPWStr)] out string     Creator);
    new int SetWorkItemData( ushort cbData,Byte[] rgbData);
    new int GetWorkItemData(  out ushort cbData,
                  out Byte[] rgbData);
    new int SetErrorRetryCount( ushort wRetryCount);
    new int GetErrorRetryCount( out ushort wRetryCount);
    new int SetErrorRetryInterval( ushort wRetryInterval);
    new int GetErrorRetryInterval( out ushort wRetryInterval);
    new int SetFlags( uint dwFlags);
    new int GetFlags( out uint dwFlags);
    new int SetAccountInformation(  [MarshalAs(UnmanagedType.LPWStr)] string AccountName,
                    [MarshalAs(UnmanagedType.LPWStr)] string PassUInt16);
    new int GetAccountInformation(  [MarshalAs(UnmanagedType.LPWStr)] out string AccountName);

    // Methods specific to ITask
    int SetApplicationName([MarshalAs(UnmanagedType.LPWStr)]   string ApplicationName);
    int GetApplicationName([MarshalAs(UnmanagedType.LPWStr)] out string ApplicationName);
    int SetParameters([MarshalAs(UnmanagedType.LPWStr)]   string Parameters);
    int GetParameters([MarshalAs(UnmanagedType.LPWStr)] out string Parameters);
    int SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)]   string WorkingDirectory);
    int GetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] out string WorkingDirectory);
    int SetPriority(uint Priority);
    int GetPriority(out uint Priority);
    int SetTaskFlags(uint Flags);
    int GetTaskFlags(out uint Flags);
    int SetMaxRunTime(uint MaxRunTimeMS);
    int GetMaxRunTime(out uint MaxRunTimeMS);
    }

Helper Code

  using System;
  using System.Collections.Generic;
  using System.Runtime.InteropServices;
  using System.Reflection;

  namespace MSTask
  {
    public static class Scheduler
    {
    static public Guid CLSID_ITaskScheduler = new Guid("148BD52A-A2AB-11CE-B11F-00AA00530503");
    static public Guid CLSID_ITask      = new Guid("148BD520-A2AB-11CE-B11F-00AA00530503");
    static public Guid IID_ITask        = new Guid("148BD524-A2AB-11CE-B11F-00AA00530503");
    static public Guid IID_IPersistFile     = new Guid("0000010b-0000-0000-C000-000000000046");

    static public ITaskScheduler CreateTaskScheduler()
    {
        Type obj = Type.GetTypeFromCLSID(CLSID_ITaskScheduler, true);
        return Activator.CreateInstance(obj) as ITaskScheduler;
    }

    static public TASK_TRIGGER CreateTaskTrigger()
    {
        TASK_TRIGGER obj = new TASK_TRIGGER();
        obj.cbTriggerSize = (ushort)Marshal.SizeOf(obj);
        return obj;
    }

    static public List<string> TaskList(ITaskScheduler taskscheduler)
    {
        object obj;

        taskscheduler.Enum(out obj);

        IEnumWorkItems enumerator = obj as IEnumWorkItems;
        uint       nameCount;
        IntPtr     namePtr;
        List<string>   list       = new List<string>();

        while (enumerator.Next(1, out namePtr, out nameCount) == 0 && nameCount == 1)
        {
        IntPtr name = Marshal.ReadIntPtr(namePtr);

        list.Add(Marshal.PtrToStringUni(name));

        CoTaskMemFree(namePtr);
        CoTaskMemFree(name);
        }

        return list;
    }

    [DllImport("ole32.Dll")]
    static extern void CoTaskMemFree(IntPtr pv);
    }
  }

VB Definition:

<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface ITask
   TODO
End Interface

User-Defined Types:

None.

Notes:

None.

Documentation
ITask on MSDN