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");
[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);
}
[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;
}
using System;
using System.Runtime.InteropServices;
static public int SaveTask(object task)
{
IntPtr fileObj;
int hr = 0;
hr = Marshal.QueryInterface(Marshal.GetIUnknownForObject(task), ref IID_IPersistFile, out fileObj);
if (hr != 0)
return hr;
IPersistFile file = Marshal.GetObjectForIUnknown(fileObj) as IPersistFile;
file.Save(null, true);
return hr;
}
<ComImport> _
<Guid("TODO")> _
'TODO: Insert <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _ if this doesn't derive from IDispatch
Interface ITask
TODO
End Interface
None.
None.