我想使用c ++在“任务计划程序”中检查任务的触发器。 我想使用功能 HRESULT get_Type(TASK_TRIGGER_TYPE2 * pType); 检查任务是登录还是引导触发。
TASK_STATE taskState;
for (LONG i = 0; i < numTasks; i++)
{
IRegisteredTask* pRegisteredTask = NULL;
hr = pTaskCollection->get_Item(_variant_t(i + 1), &pRegisteredTask);
if (SUCCEEDED(hr))
{
BSTR taskName = NULL;
TASK_TRIGGER_TYPE2 *pType = NULL;
hr = pRegisteredTask->get_Name(&taskName);
if (SUCCEEDED(hr))
{
printf("\nTask Name: %S", taskName);
SysFreeString(taskName);
hr = pRegisteredTask->get_Type(*pType); //Implemented here
if (SUCCEEDED(hr))
printf("\n%s",&pType);
else
printf("\n\tCannot get the registered task state: %x", hr);
}
hr = pRegisteredTask->get_State(&taskState);
if (SUCCEEDED(hr))
printf("\n\tState: %d", taskState);
else
printf("\n\tCannot get the registered task state: %x", hr);
}
else
{
printf("\nCannot get the registered task name: %x", hr);
}
pRegisteredTask->Release();
}
else
{
printf("\nCannot get the registered task item at index=%d: %x", i + 1, hr);
}
}
在编译时,它给我一个错误,说“ IRegisteredTask没有成员get_Type()”
然后我更改了代码并添加了 ITrigger * trig = NULL; trig-> get_Type(&pType);
但这也不给我任何价值
答案 0 :(得分:2)
答案 1 :(得分:0)
看documentation,看起来好像拥有IRegisteredTask之后,您需要调用get_Definition()以获得其ITaskDefinition。
使用ITaskDefinition,您可以通过get_Triggers()获得一个ITriggerCollection
然后,枚举ITriggerCollection,可以查询每个ITrigger的QueryInterface()来查看它是否支持ILogonTrigger或IBootTrigger接口。