moel@82: /*
moel@82:   
moel@82:   Version: MPL 1.1/GPL 2.0/LGPL 2.1
moel@82: 
moel@82:   The contents of this file are subject to the Mozilla Public License Version
moel@82:   1.1 (the "License"); you may not use this file except in compliance with
moel@82:   the License. You may obtain a copy of the License at
moel@82:  
moel@82:   http://www.mozilla.org/MPL/
moel@82: 
moel@82:   Software distributed under the License is distributed on an "AS IS" basis,
moel@82:   WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
moel@82:   for the specific language governing rights and limitations under the License.
moel@82: 
moel@82:   The Original Code is the Open Hardware Monitor code.
moel@82: 
moel@82:   The Initial Developer of the Original Code is 
moel@82:   Michael Möller <m.moeller@gmx.ch>.
moel@82:   Portions created by the Initial Developer are Copyright (C) 2009-2010
moel@82:   the Initial Developer. All Rights Reserved.
moel@82: 
moel@82:   Contributor(s):
moel@82: 
moel@82:   Alternatively, the contents of this file may be used under the terms of
moel@82:   either the GNU General Public License Version 2 or later (the "GPL"), or
moel@82:   the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
moel@82:   in which case the provisions of the GPL or the LGPL are applicable instead
moel@82:   of those above. If you wish to allow use of your version of this file only
moel@82:   under the terms of either the GPL or the LGPL, and not to allow others to
moel@82:   use your version of this file under the terms of the MPL, indicate your
moel@82:   decision by deleting the provisions above and replace them with the notice
moel@82:   and other provisions required by the GPL or the LGPL. If you do not delete
moel@82:   the provisions above, a recipient may use your version of this file under
moel@82:   the terms of any one of the MPL, the GPL or the LGPL.
moel@82:  
moel@82: */
moel@82: 
moel@82: using System;
moel@82: using System.Collections;
moel@82: using System.Reflection;
moel@82: using System.Runtime.CompilerServices;
moel@82: using System.Runtime.InteropServices;
moel@82: 
moel@82: namespace OpenHardwareMonitor.TaskScheduler {
moel@82: 
moel@82:   public enum TASK_ACTION_TYPE {
moel@82:     TASK_ACTION_COM_HANDLER = 5,
moel@82:     TASK_ACTION_EXEC = 0,
moel@82:     TASK_ACTION_SEND_EMAIL = 6,
moel@82:     TASK_ACTION_SHOW_MESSAGE = 7
moel@82:   }
moel@82: 
moel@82:   public enum TASK_CREATION {
moel@82:     TASK_CREATE = 2,
moel@82:     TASK_CREATE_OR_UPDATE = 6,
moel@82:     TASK_DISABLE = 8,
moel@82:     TASK_DONT_ADD_PRINCIPAL_ACE = 0x10,
moel@82:     TASK_IGNORE_REGISTRATION_TRIGGERS = 0x20,
moel@82:     TASK_UPDATE = 4,
moel@82:     TASK_VALIDATE_ONLY = 1
moel@82:   }
moel@82: 
moel@82:   public enum TASK_ENUM_FLAGS {
moel@82:     TASK_ENUM_HIDDEN = 1
moel@82:   }
moel@82: 
moel@82:   public enum TASK_INSTANCES_POLICY {
moel@82:     TASK_INSTANCES_PARALLEL,
moel@82:     TASK_INSTANCES_QUEUE,
moel@82:     TASK_INSTANCES_IGNORE_NEW,
moel@82:     TASK_INSTANCES_STOP_EXISTING
moel@82:   }
moel@82: 
moel@82:   public enum TASK_LOGON_TYPE {
moel@82:     TASK_LOGON_NONE,
moel@82:     TASK_LOGON_PASSWORD,
moel@82:     TASK_LOGON_S4U,
moel@82:     TASK_LOGON_INTERACTIVE_TOKEN,
moel@82:     TASK_LOGON_GROUP,
moel@82:     TASK_LOGON_SERVICE_ACCOUNT,
moel@82:     TASK_LOGON_INTERACTIVE_TOKEN_OR_PASSWORD
moel@82:   }
moel@82: 
moel@82:   public enum TASK_RUN_FLAGS {
moel@82:     TASK_RUN_AS_SELF = 1,
moel@82:     TASK_RUN_IGNORE_CONSTRAINTS = 2,
moel@82:     TASK_RUN_NO_FLAGS = 0,
moel@82:     TASK_RUN_USE_SESSION_ID = 4,
moel@82:     TASK_RUN_USER_SID = 8
moel@82:   }
moel@82: 
moel@82:   public enum TASK_RUNLEVEL {
moel@82:     TASK_RUNLEVEL_LUA,
moel@82:     TASK_RUNLEVEL_HIGHEST
moel@82:   }
moel@82: 
moel@82:   public enum TASK_STATE {
moel@82:     TASK_STATE_UNKNOWN,
moel@82:     TASK_STATE_DISABLED,
moel@82:     TASK_STATE_QUEUED,
moel@82:     TASK_STATE_READY,
moel@82:     TASK_STATE_RUNNING
moel@82:   }
moel@82: 
moel@82:   public enum TASK_TRIGGER_TYPE2 {
moel@82:     TASK_TRIGGER_BOOT = 8,
moel@82:     TASK_TRIGGER_DAILY = 2,
moel@82:     TASK_TRIGGER_EVENT = 0,
moel@82:     TASK_TRIGGER_IDLE = 6,
moel@82:     TASK_TRIGGER_LOGON = 9,
moel@82:     TASK_TRIGGER_MONTHLY = 4,
moel@82:     TASK_TRIGGER_MONTHLYDOW = 5,
moel@82:     TASK_TRIGGER_REGISTRATION = 7,
moel@82:     TASK_TRIGGER_SESSION_STATE_CHANGE = 11,
moel@82:     TASK_TRIGGER_TIME = 1,
moel@82:     TASK_TRIGGER_WEEKLY = 3
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("BAE54997-48B1-4CBE-9965-D6BE263EBEA4")]
moel@82:   public interface IAction {
moel@82:     [DispId(1)]
moel@82:     string Id { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] set; }
moel@82:     [DispId(2)]
moel@82:     TASK_ACTION_TYPE Type { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("02820E19-7B98-4ED2-B2E8-FDCCCEFF619B")]
moel@82:   public interface IActionCollection : IEnumerable {
moel@82:     [DispId(1)]
moel@82:     int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
moel@82:     [DispId(0)]
moel@82:     IAction this[int index] { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:     [DispId(2)]
moel@82:     string XmlText { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)]
moel@82:     IAction Create([In] TASK_ACTION_TYPE Type);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)]
moel@82:     void Remove([In, MarshalAs(UnmanagedType.Struct)] object index);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
moel@82:     void Clear();
moel@82:     [DispId(6)]
moel@82:     string Context { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, Guid("4C3D624D-FD6B-49A3-B9B7-09CB3CD3F047"), TypeLibType((short)0x10c0)]
moel@82:   public interface IExecAction : IAction {
moel@82:     [DispId(10)]
moel@82:     string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] set; }
moel@82:     [DispId(11)]
moel@82:     string Arguments { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] set; }
moel@82:     [DispId(12)]
moel@82:     string WorkingDirectory { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, Guid("72DADE38-FAE4-4B3E-BAF4-5D009AF02B1C"), TypeLibType((short)0x10c0)]
moel@82:   public interface ILogonTrigger : ITrigger {
moel@82:     [DispId(20)]
moel@82:     string Delay { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(20)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(20)] set; }
moel@82:     [DispId(0x15)]
moel@82:     string UserId { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x15)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x15)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, Guid("D98D51E5-C9B4-496A-A9C1-18980261CF0F"), TypeLibType((short)0x10c0)]
moel@82:   public interface IPrincipal {
moel@82:     [DispId(1)]
moel@82:     string Id { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] set; }
moel@82:     [DispId(2)]
moel@82:     string DisplayName { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
moel@82:     [DispId(3)]
moel@82:     string UserId { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
moel@82:     [DispId(4)]
moel@82:     TASK_LOGON_TYPE LogonType { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
moel@82:     [DispId(5)]
moel@82:     string GroupId { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] set; }
moel@82:     [DispId(6)]
moel@82:     TASK_RUNLEVEL RunLevel { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, DefaultMember("Path"), Guid("9C86F320-DEE3-4DD1-B972-A303F26B061E"), TypeLibType((short)0x10c0), ComConversionLoss]
moel@82:   public interface IRegisteredTask {
moel@82:     [DispId(1)]
moel@82:     string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
moel@82:     [DispId(0)]
moel@82:     string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:     [DispId(2)]
moel@82:     TASK_STATE State { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; }
moel@82:     [DispId(3)]
moel@82:     bool Enabled { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
moel@82:     [DispId(8)]
moel@82:     DateTime LastRunTime { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)] get; }
moel@82:     [DispId(9)]
moel@82:     int LastTaskResult { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)] get; }
moel@82:     [DispId(11)]
moel@82:     int NumberOfMissedRuns { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] get; }
moel@82:     [DispId(12)]
moel@82:     DateTime NextRunTime { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] get; }
moel@82:     [DispId(13)]
moel@82:     ITaskDefinition Definition { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)] get; }
moel@82:     [DispId(14)]
moel@82:     string Xml { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)] get; }
moel@82:     [return: MarshalAs(UnmanagedType.BStr)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(15)]
moel@82:     string GetSecurityDescriptor([In] int securityInformation);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x10)]
moel@82:     void SetSecurityDescriptor([In, MarshalAs(UnmanagedType.BStr)] string sddl, [In] int flags);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x11)]
moel@82:     void Stop([In] int flags);
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("86627EB4-42A7-41E4-A4D9-AC33A72F2D52")]
moel@82:   public interface IRegisteredTaskCollection : IEnumerable {
moel@82:     [DispId(0x60020000)]
moel@82:     int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
moel@82:     [DispId(0)]
moel@82:     IRegisteredTask this[object index] { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, Guid("416D8B73-CB41-4EA1-805C-9BE9A5AC4A74"), TypeLibType((short)0x10c0)]
moel@82:   public interface IRegistrationInfo {
moel@82:     [DispId(1)]
moel@82:     string Description { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] set; }
moel@82:     [DispId(2)]
moel@82:     string Author { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
moel@82:     [DispId(4)]
moel@82:     string Version { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
moel@82:     [DispId(5)]
moel@82:     string Date { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] set; }
moel@82:     [DispId(6)]
moel@82:     string Documentation { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] set; }
moel@82:     [DispId(9)]
moel@82:     string XmlText { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)] set; }
moel@82:     [DispId(10)]
moel@82:     string URI { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] set; }
moel@82:     [DispId(11)]
moel@82:     object SecurityDescriptor { [return: MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] get; [param: In, MarshalAs(UnmanagedType.Struct)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] set; }
moel@82:     [DispId(12)]
moel@82:     string Source { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("F5BC8FC5-536D-4F77-B852-FBC1356FDEB6")]
moel@82:   public interface ITaskDefinition {
moel@82:     [DispId(1)]
moel@82:     IRegistrationInfo RegistrationInfo { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; [param: In, MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] set; }
moel@82:     [DispId(2)]
moel@82:     ITriggerCollection Triggers { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In, MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
moel@82:     [DispId(7)]
moel@82:     ITaskSettings Settings { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] get; [param: In, MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] set; }
moel@82:     [DispId(11)]
moel@82:     string Data { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] set; }
moel@82:     [DispId(12)]
moel@82:     IPrincipal Principal { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] get; [param: In, MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] set; }
moel@82:     [DispId(13)]
moel@82:     IActionCollection Actions { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)] get; [param: In, MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)] set; }
moel@82:     [DispId(14)]
moel@82:     string XmlText { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, DefaultMember("Path"), Guid("8CFAC062-A080-4C15-9A88-AA7C2AF80DFC"), TypeLibType((short)0x10c0)]
moel@82:   public interface ITaskFolder {
moel@82:     [DispId(1)]
moel@82:     string Name { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
moel@82:     [DispId(0)]
moel@82:     string Path { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)]
moel@82:     ITaskFolder GetFolder([MarshalAs(UnmanagedType.BStr)] string Path);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)]
moel@82:     ITaskFolderCollection GetFolders([In] int flags);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
moel@82:     ITaskFolder CreateFolder([In, MarshalAs(UnmanagedType.BStr)] string subFolderName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object sddl);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)]
moel@82:     void DeleteFolder([MarshalAs(UnmanagedType.BStr)] string subFolderName, [In] int flags);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)]
moel@82:     IRegisteredTask GetTask([In, MarshalAs(UnmanagedType.BStr)] string Path);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)]
moel@82:     IRegisteredTaskCollection GetTasks([In] int flags);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)]
moel@82:     void DeleteTask([In, MarshalAs(UnmanagedType.BStr)] string Name, [In] int flags);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)]
moel@82:     IRegisteredTask RegisterTask([In, MarshalAs(UnmanagedType.BStr)] string Path, [In, MarshalAs(UnmanagedType.BStr)] string XmlText, [In] int flags, [In, MarshalAs(UnmanagedType.Struct)] object UserId, [In, MarshalAs(UnmanagedType.Struct)] object password, [In] TASK_LOGON_TYPE LogonType, [In, Optional, MarshalAs(UnmanagedType.Struct)] object sddl);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)]
moel@82:     IRegisteredTask RegisterTaskDefinition([In, MarshalAs(UnmanagedType.BStr)] string Path, [In, MarshalAs(UnmanagedType.Interface)] ITaskDefinition pDefinition, [In] int flags, [In, MarshalAs(UnmanagedType.Struct)] object UserId, [In, MarshalAs(UnmanagedType.Struct)] object password, [In] TASK_LOGON_TYPE LogonType, [In, Optional, MarshalAs(UnmanagedType.Struct)] object sddl);
moel@82:     [return: MarshalAs(UnmanagedType.BStr)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)]
moel@82:     string GetSecurityDescriptor(int securityInformation);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)]
moel@82:     void SetSecurityDescriptor([In, MarshalAs(UnmanagedType.BStr)] string sddl, [In] int flags);
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("79184A66-8664-423F-97F1-637356A5D812")]
moel@82:   public interface ITaskFolderCollection : IEnumerable {
moel@82:     [DispId(0x60020000)]
moel@82:     int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x60020000)] get; }
moel@82:     [DispId(0)]
moel@82:     ITaskFolder this[object index] { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), DefaultMember("TargetServer"), Guid("2FABA4C7-4DA9-4013-9697-20CC3FD40F85")]
moel@82:   public interface ITaskService {
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
moel@82:     ITaskFolder GetFolder([In, MarshalAs(UnmanagedType.BStr)] string Path);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)]
moel@82:     ITaskDefinition NewTask([In] uint flags);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)]
moel@82:     void Connect([In, Optional, MarshalAs(UnmanagedType.Struct)] object serverName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object user, [In, Optional, MarshalAs(UnmanagedType.Struct)] object domain, [In, Optional, MarshalAs(UnmanagedType.Struct)] object password);
moel@82:     [DispId(5)]
moel@82:     bool Connected { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; }
moel@82:     [DispId(0)]
moel@82:     string TargetServer { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:     [DispId(6)]
moel@82:     string ConnectedUser { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; }
moel@82:     [DispId(7)]
moel@82:     string ConnectedDomain { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] get; }
moel@82:     [DispId(8)]
moel@82:     uint HighestVersion { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)] get; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("8FD4711D-2D02-4C8C-87E3-EFF699DE127E")]
moel@82:   public interface ITaskSettings {
moel@82:     [DispId(3)]
moel@82:     bool AllowDemandStart { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)] set; }
moel@82:     [DispId(4)]
moel@82:     string RestartInterval { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
moel@82:     [DispId(5)]
moel@82:     int RestartCount { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] set; }
moel@82:     [DispId(6)]
moel@82:     TASK_INSTANCES_POLICY MultipleInstances { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] set; }
moel@82:     [DispId(7)]
moel@82:     bool StopIfGoingOnBatteries { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] set; }
moel@82:     [DispId(8)]
moel@82:     bool DisallowStartIfOnBatteries { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)] set; }
moel@82:     [DispId(9)]
moel@82:     bool AllowHardTerminate { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(9)] set; }
moel@82:     [DispId(10)]
moel@82:     bool StartWhenAvailable { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(10)] set; }
moel@82:     [DispId(11)]
moel@82:     string XmlText { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(11)] set; }
moel@82:     [DispId(12)]
moel@82:     bool RunOnlyIfNetworkAvailable { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(12)] set; }
moel@82:     [DispId(13)]
moel@82:     string ExecutionTimeLimit { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(13)] set; }
moel@82:     [DispId(14)]
moel@82:     bool Enabled { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(14)] set; }
moel@82:     [DispId(15)]
moel@82:     string DeleteExpiredTaskAfter { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(15)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(15)] set; }
moel@82:     [DispId(0x10)]
moel@82:     int Priority { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x10)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x10)] set; }
moel@82:     [DispId(0x12)]
moel@82:     bool Hidden { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x12)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x12)] set; }
moel@82:     [DispId(20)]
moel@82:     bool RunOnlyIfIdle { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(20)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(20)] set; }
moel@82:     [DispId(0x15)]
moel@82:     bool WakeToRun { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x15)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x15)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("09941815-EA89-4B5B-89E0-2A773801FAC3")]
moel@82:   public interface ITrigger {
moel@82:     [DispId(1)]
moel@82:     TASK_TRIGGER_TYPE2 Type { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
moel@82:     [DispId(2)]
moel@82:     string Id { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)] set; }
moel@82:     [DispId(4)]
moel@82:     string ExecutionTimeLimit { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)] set; }
moel@82:     [DispId(5)]
moel@82:     string StartBoundary { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] set; }
moel@82:     [DispId(6)]
moel@82:     string EndBoundary { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; [param: In, MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] set; }
moel@82:     [DispId(7)]
moel@82:     bool Enabled { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] get; [param: In] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] set; }
moel@82:   }
moel@82: 
moel@82:   [ComImport, TypeLibType((short)0x10c0), Guid("85DF5081-1B24-4F32-878A-D9D14DF4CB77")]
moel@82:   public interface ITriggerCollection : IEnumerable {
moel@82:     [DispId(1)]
moel@82:     int Count { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)] get; }
moel@82:     [DispId(0)]
moel@82:     ITrigger this[int index] { [return: MarshalAs(UnmanagedType.Interface)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(2)]
moel@82:     ITrigger Create([In] TASK_TRIGGER_TYPE2 Type);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)]
moel@82:     void Remove([In, MarshalAs(UnmanagedType.Struct)] object index);
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)]
moel@82:     void Clear();
moel@82:   }
moel@82: 
moel@82:   [ComImport, CoClass(typeof(TaskSchedulerClass)), Guid("2FABA4C7-4DA9-4013-9697-20CC3FD40F85")]
moel@82:   public interface TaskScheduler : ITaskService {
moel@82:   }
moel@82: 
moel@82:   [ComImport, ClassInterface((short)0), DefaultMember("TargetServer"), Guid("0F87369F-A4E5-4CFC-BD3E-73E6154572DD"), TypeLibType((short)2)]
moel@82:   public class TaskSchedulerClass : ITaskService, TaskScheduler {
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(4)]
moel@82:     public virtual extern void Connect([In, Optional, MarshalAs(UnmanagedType.Struct)] object serverName, [In, Optional, MarshalAs(UnmanagedType.Struct)] object user, [In, Optional, MarshalAs(UnmanagedType.Struct)] object domain, [In, Optional, MarshalAs(UnmanagedType.Struct)] object password);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(1)]
moel@82:     public virtual extern ITaskFolder GetFolder([In, MarshalAs(UnmanagedType.BStr)] string Path);
moel@82:     [return: MarshalAs(UnmanagedType.Interface)]
moel@82:     [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(3)]
moel@82:     public virtual extern ITaskDefinition NewTask([In] uint flags);
moel@82:     [DispId(5)]
moel@82:     public virtual extern bool Connected { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(5)] get; }
moel@82:     [DispId(7)]
moel@82:     public virtual extern string ConnectedDomain { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(7)] get; }
moel@82:     [DispId(6)]
moel@82:     public virtual extern string ConnectedUser { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(6)] get; }
moel@82:     [DispId(8)]
moel@82:     public virtual extern uint HighestVersion { [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(8)] get; }
moel@82:     [DispId(0)]
moel@82:     public virtual extern string TargetServer { [return: MarshalAs(UnmanagedType.BStr)] [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0)] get; }
moel@82:   }
moel@82: }
moel@82: 
moel@82: