[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, // Ignore the Type field.
TASK_TIME_TRIGGER_DAILY = 1, // Use DAILY
TASK_TIME_TRIGGER_WEEKLY = 2, // Use WEEKLY
TASK_TIME_TRIGGER_MONTHLYDATE = 3, // Use MONTHLYDATE
TASK_TIME_TRIGGER_MONTHLYDOW = 4, // Use MONTHLYDOW
TASK_EVENT_TRIGGER_ON_IDLE = 5, // Ignore the Type field.
TASK_EVENT_TRIGGER_AT_SYSTEMSTART = 6, // Ignore the Type field.
TASK_EVENT_TRIGGER_AT_LOGON = 7, // Ignore the Type field.
}
[Flags]
public enum TASK_TRIGGER_FLAG
{
TASK_TRIGGER_FLAG_HAS_END_DATE = 0x1,
TASK_TRIGGER_FLAG_KILL_AT_DURATION_END = 0x2,
TASK_TRIGGER_FLAG_DISABLED = 0x4,
}
[StructLayout(LayoutKind.Sequential)]
public struct DAILY
{
public ushort DaysInterval;
}
[StructLayout(LayoutKind.Sequential)]
public struct WEEKLY
{
public ushort WeeksInterval;
public ushort rgfDaysOfTheWeek;
}
[StructLayout(LayoutKind.Sequential)]
public struct MONTHLYDATE
{
public uint rgfDays;
public ushort rgfMonths;
}
[StructLayout(LayoutKind.Sequential)]
public struct MONTHLYDOW
{
public ushort wWhichWeek;
public ushort rgfDaysOfTheWeek;
public ushort rgfMonths;
}
[StructLayout(LayoutKind.Explicit)]
public struct TRIGGER_TYPE_UNION
{
[FieldOffset(0)] public DAILY Daily;
[FieldOffset(0)] public WEEKLY Weekly;
[FieldOffset(0)] public MONTHLYDATE MonthlyDate;
[FieldOffset(0)] public MONTHLYDOW MonthlyDOW;
}
[StructLayout(LayoutKind.Sequential)]
public struct TASK_TRIGGER
{
public ushort cbTriggerSize;
public ushort Reserved1;
public ushort wBeginYear;
public ushort wBeginMonth;
public ushort wBeginDay;
public ushort wEndYear;
public ushort wEndMonth;
public ushort wEndDay;
public ushort wStartHour;
public ushort wStartMinute;
public uint MinutesDuration;
public uint MinutesInterval;
public TASK_TRIGGER_FLAG rgFlags;
public TASK_TRIGGER_TYPE TriggerType;
public TRIGGER_TYPE_UNION Type;
public ushort Reserved2;
public ushort wRandomMinutesInterval;
static public TASK_TRIGGER CreateInstance()
{
TASK_TRIGGER obj = new TASK_TRIGGER();
obj.cbTriggerSize = (ushort)Marshal.SizeOf(obj);
return obj;
}
}
<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface ITaskTrigger
TODO
End Interface
None.
None.