ITask (Interfaces)
Last changed: -203.167.226.133

.
Summary
TODO - a short description

C# Definition:

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);
    }

    [Guid("148BD527-A2AB-11CE-B11F-00AA00530503"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ITaskScheduler
    {
    int SetTargetComputer(  [MarshalAs(UnmanagedType.LPWStr)]   string      computer);
    int GetTargetComputer(  [MarshalAs(UnmanagedType.LPWStr)]   out string  computer);
    int Enum(           [MarshalAs(UnmanagedType.IUnknown)] out object  enumworkitems);
    int Activate(       [MarshalAs(UnmanagedType.LPWStr)]   string      name,
                                    ref Guid    riid,
                [MarshalAs(UnmanagedType.IUnknown)] out object  obj);
    int Delete(         [MarshalAs(UnmanagedType.LPWStr)]   string      name);
    int NewWorkItem(    [MarshalAs(UnmanagedType.LPWStr)]   string      name,
                                    ref Guid    rclsid,
                                    ref Guid    riid,
                [MarshalAs(UnmanagedType.IUnknown)] out object  obj);
    int AddWorkItem(    [MarshalAs(UnmanagedType.LPWStr)]   string      name,
                [MarshalAs(UnmanagedType.IUnknown)] object      obj);
    int IsOfType(       [MarshalAs(UnmanagedType.LPWStr)]   string      name,
                                    ref Guid    riid);
    };

    [Guid("148BD528-A2AB-11CE-B11F-00AA00530503"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IEnumWorkItems
    {
    int Next(uint celt, out IntPtr names,out uint namecount);
    int Skip(uint celt);
    int Reset() ;
    int Clone([MarshalAs(UnmanagedType.IUnknown)] out object EnumWorkItems);
    };

    [Guid("a6b952f0-a4b1-11d0-997d-00aa006887ec"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IScheduledWorkItem
    {
    int CreateTrigger(                      out ushort  iTrigger,
                [MarshalAs(UnmanagedType.IUnknown)] out object  trigger);
    int DeleteTrigger(                      ushort      iTrigger);
    int GetTriggerCount(                    out ushort  iTriggerCount);
    int GetTrigger(                     ushort      iTrigger,
                [MarshalAs(UnmanagedType.IUnknown)] out object  trigger);

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

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

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

    [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);
    }

    [Guid("148BD52B-A2AB-11CE-B11F-00AA00530503"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface ITaskTrigger
    {
    int SetTrigger( ref TASK_TRIGGER pTrigger);
    int GetTrigger( ref TASK_TRIGGER pTrigger);
    int GetTriggerString([MarshalAs(UnmanagedType.LPWStr)] out string wszTrigger);
    };

    public 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
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct TASK_TRIGGER
    {
    [MarshalAs(UnmanagedType.U2)]     public ushort          cbTriggerSize;
    [MarshalAs(UnmanagedType.U2)]     public ushort          Reserved1;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wBeginYear;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wBeginMonth;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wBeginDay;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wEndYear;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wEndMonth;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wEndDay;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wStartHour;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wStartMinute;
    [MarshalAs(UnmanagedType.U4)]     public uint        MinutesDuration;
    [MarshalAs(UnmanagedType.U4)]     public uint        MinutesInterval;
    [MarshalAs(UnmanagedType.U4)]     public uint        rgFlags;
    [MarshalAs(UnmanagedType.U4)]     public TASK_TRIGGER_TYPE   TriggerType;
    [MarshalAs(UnmanagedType.U2)]     public ushort          item1;
    [MarshalAs(UnmanagedType.U2)]     public ushort          item2;
    [MarshalAs(UnmanagedType.U2)]     public ushort          item3;
    [MarshalAs(UnmanagedType.U2)]     public ushort          item4;
    [MarshalAs(UnmanagedType.U2)]     public ushort          Reserved2;
    [MarshalAs(UnmanagedType.U2)]     public ushort          wRandomMinutesInterval;

    public ushort DaysInterval      { get { return item1; } set { item1 = value; } }
    public ushort WeeksInterval     { get { return item1; } set { item1 = value; } }
    public ushort rgfDaysOfTheWeek  { get { return item2; } set { item2 = value; } }
    public ushort wWhichWeek    { get { return item1; } set { item1 = value; } }
    public ushort rgfMonths     { get { return item3; } set { item3 = value; } }
    public uint   rgfDays       { get { return ((uint)item1 <<  0) |
                               ((uint)item2 << 16);           }
                      set { item1 = (ushort)((value >>  0) & 0xFFFF);
                        item2 = (ushort)((value >> 16) & 0xFFFF); }}
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEMTIME
    {
    [MarshalAs(UnmanagedType.U2)] short Year;
    [MarshalAs(UnmanagedType.U2)] short Month;
    [MarshalAs(UnmanagedType.U2)] short DayOfWeek;
    [MarshalAs(UnmanagedType.U2)] short Day;
    [MarshalAs(UnmanagedType.U2)] short Hour;
    [MarshalAs(UnmanagedType.U2)] short Minute;
    [MarshalAs(UnmanagedType.U2)] short Second;
    [MarshalAs(UnmanagedType.U2)] short Milliseconds;
    }

    [ComImport, Guid("0000010c-0000-0000-c000-000000000046"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPersist
    {
    [PreserveSig] void GetClassID(out Guid pClassID);
    }

    [ComImport, Guid("0000010b-0000-0000-C000-000000000046"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPersistFile : IPersist
    {
    new void GetClassID(out Guid pClassID);
    [PreserveSig]   int IsDirty();
    [PreserveSig]   void Load(  [In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
                    uint dwMode);
    [PreserveSig]   void Save(  [In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName,
                    [In, MarshalAs(UnmanagedType.Bool)] bool fRemember);
    [PreserveSig]   void SaveCompleted([In, MarshalAs(UnmanagedType.LPWStr)] string pszFileName);
    [PreserveSig]   void GetCurFile([In, MarshalAs(UnmanagedType.LPWStr)] string ppszFileName);
    }

}

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