Как узнать время запуска задачи из планировщика задач через Windows API? - PullRequest
0 голосов
/ 03 сентября 2018

enter image description here

Я хочу знать это время начала в коде. Я нашел этот документ Mircosoft о ITask . Он предоставляет несколько методов для получения информации о задаче, такой как имя приложения, максимальное время выполнения и рабочий каталог ... но не имеет того, что мне нужно - время запуска.

1 Ответ

0 голосов
/ 03 сентября 2018

Время запуска задачи связано с триггером задачи, а не с самой задачей. В следующем коде вам нужно инициализировать 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();

}
...