使用命令行打开 Windows 计划任务 Gui 属性

Open Windows Schedule Task Gui Properties with command line

我正在创建一个 Delphi 组件来使用来自 schtasks.

的命令行在 Windows 中安排任务

我的疑问是: 创建任务的基本框架后,我想通过 Windows 任务编辑器打开它们的属性。

我还没有找到调用任务属性的方法,我创建了标准 Windows 接口。

也许有人可以帮助我?

图片样本:

我不知道,也找不到在 UI 中打开特定任务的方法。您可以使用 taskschd.msc 打开任务计划程序 UI,但这不会打开特定任务。

所以恐怕您必须自己构建一些 UI。您可以使用 API 然后更改属性。也可以通过 schtasks 更改属性。它有几个命令行选项,其中之一是

/Change - Changes the properties of scheduled task.

使用 schtasks /Change /?,您可以获得有关更改参数的更多详细信息,以及您需要指定哪些附加参数来更改特定任务属性。不幸的是,似乎没有打开 GUI.

的参数

如果您够勇敢,可以使用 Scheduler API functions 而不是 schtasks 命令行工具。 :)

经过测试,我将找到使用 Windows API 和 JCL 抽象 (MsTask.pas) 的解决方案。

我根据link的例子编写了我的代码: https://msdn.microsoft.com/en-us/library/windows/desktop/aa446830(v=vs.85).aspx

下面是编辑特定任务的方法的完整示例:

Uses MSTask{JCL Abstraction}, ActiveX;

Procedure TForm7.EditTask(ATaskName: String);
Var
  LTask: ITask;
  LSchedulingAgent: ITaskScheduler;
  LOutAux: IInterface;

Var
  LResult: HRESULT;

Begin

  //Get scheduler object
  LResult := CoCreateInstance(CLSID_CTaskScheduler,
    Nil,
    CLSCTX_INPROC_SERVER,
    IID_ITaskScheduler,
    LSchedulingAgent);

  If LResult = S_OK Then
  Begin
    //get task object
    LResult := LSchedulingAgent.Activate(PWideChar(ATaskName), IID_ITask, LOutAux);

    If LResult = S_OK Then
    Begin
      LTask := ITask(LOutAux);
      LTask.EditWorkItem(0, 0);
    End
    Else
      ShowMessage('TaskName not found!');

  End
  Else
    ShowMessage('Error to get scheduler object.');

End;

谢谢大家的帮助。