我如何通过Windows API知道任务计划程序的任务开始时间?

时间:2018-09-03 03:03:41

标签: c++ winapi windows-scheduler

enter image description here

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

1 个答案:

答案 0 :(得分:1)

任务开始时间与任务触发器关联,而不与任务本身关联。 在以下代码中,您需要使用要查找的任务初始化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();

}