如何通过WindowsAPI知道Task Scheduler的任务开始时间?

How do I know a task's start time of Task Scheduler through Windows API?

我想用代码知道这个开始时间。 我找到了这份关于 ITask 的 Mircosoft 文档。 它提供了一些方法来获取任务的信息,例如应用程序名称、最大 运行 时间和工作目录......但没有我需要的 - 开始时间。

任务开始时间与任务触发器相关联,而不是任务本身。 在下面的代码中,您需要使用您要查找的任务来初始化 IRegisteredTask

请注意,一项任务可能有多个触发器,每个触发器可能有不同的类型。

void GetStartTime(IRegisteredTask* pTask)
{
    ITaskTrigger *pTT = NULL;
    TASK_TRIGGER Trigger;   
    ITaskDefinition *pDefinition = NULL;
    ITriggerCollection *pTriggers = NULL;   
    pTask->get_Definition(&pDefinition);
    pDefinition->get_Triggers(&pTriggers);
    LONG cTriggers = 0;
    pTriggers->get_Count(&cTriggers);
    while (cTriggers > 0)
    {
        ITrigger *pT = NULL;
        pTriggers->get_Item(cTriggers, &pT);
        cTriggers--;
        BSTR bStart;
        pT->get_StartBoundary(&bStart);
        /*
        bStart will be some thing like L"2013-08-01T12:05:00"
        */
        ::SysFreeString(bStart);
        pT->Release();
    }
    pTriggers->Release();

}