如何通过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();
}
我想用代码知道这个开始时间。 我找到了这份关于 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();
}