using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Reflection;
namespace MSTask
{
[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);
}
[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);
}
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);
}
}
<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface ITask
TODO
End Interface
None.
None.