【问题标题】:C# API for Task Scheduler 2.0 [closed]任务计划程序 2.0 的 C# API [关闭]
【发布时间】:2010-10-20 12:33:33
【问题描述】:

是否有人对(基于 COM)Task Scheduler 2.0 API 的 .NET c# 包装器有任何建议?

使用 Google 找不到任何内容。

(我知道有基于 .net 的调度程序,例如 Quartz.net,但我需要 windows 调度程序中功能齐全的 GUI)

谢谢,

马特

【问题讨论】:

    标签: c#


    【解决方案1】:

    在 GitHub 上查看以下项目:

    https://github.com/dahall/taskscheduler

    【讨论】:

    • 是的,谢谢。这正是我一直在寻找的。当我搜索它时不知何故错过了它。
    • +1 正是我需要的,我也搜索了一下,直到我决定在这里进行搜索,然后发布与马特相同的问题
    • 正是我想要的。任务计划程序很痛苦,命令行(schtasks)看起来更糟。到目前为止,此 API 运行良好。谢谢!
    • 通过Nugget成功安装程序集后,它无法识别代码中的TaskService。可能是什么问题?
    【解决方案2】:

    如果您不想使用任何第三方包装器,那么下面是安排任务的示例代码。代码适用于 Windows 7。

    //create task service instance
    ITaskService taskService = new TaskSchedulerClass();
    taskService.Connect();
    ITaskDefinition taskDefinition = taskService.NewTask(0);
    taskDefinition.Settings.Enabled = true;
    taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_1;
    
    //create trigger for task creation.
    ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
    ITrigger _trigger = _iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
    _trigger.StartBoundary = DateTime.Now.AddSeconds(15).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
    _trigger.EndBoundary = DateTime.Now.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
    _trigger.Enabled = true;
    
    ///get actions.
    IActionCollection actions = taskDefinition.Actions;
    _TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC;
    
    //create new action
    IAction action = actions.Create(actionType);
    IExecAction execAction = action as IExecAction;
    execAction.Path = @"C:\Windows\System32\notepad.exe";
    ITaskFolder rootFolder = taskService.GetFolder(@"\");
    
    //register task.
    rootFolder.RegisterTaskDefinition("test", taskDefinition, 6, null, null, _TASK_LOGON_TYPE.TASK_LOGON_NONE, null);
    

    【讨论】:

    • 你从哪里得到ITaskServiceTaskSchedulerClassITaskDefinitionITriggerCollectionITriggerIActionCollectionIActionIExecAction和@987654@03 ?带有这些类和接口的程序集在 Visual Studio 2010 中不容易看到。
    • 没关系 - 我找到了“taskschd.dll”文件,在让 Visual Studio 生成一个包装好的 Interop 之后,能够将它导入我的项目中。如果我能对 PowerShell ISE 做同样的事情并将其部署到目标目标机器就好了……
    • 你拯救了我的一天,非常感谢!
    【解决方案3】:

    命令行够好吗?

    at 23:39 /every:wednesday defrag c:

    【讨论】:

    • 或者更好的是它的继任者schtasks
    【解决方案4】:

    您可以通过以下 Nuget 命令获得功能齐全的 GUI。

    PM> 安装包TaskSchedulerEditor

    【讨论】:

    • 如果windows有专门为此taskschd.msc /s987654322@的gui版本,你为什么要安装一个带有gui的包?
    • 这里 TaskSchedulerEditor 是 COM 包装器的名称,设计用于在 C# 代码中访问 Windows 任务调度程序 GUI。
    • 这是taskscheduler.codeplex.com的nuget包
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 2012-03-08
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多