2024年1月27日发(作者:)

ITaskScheduler *pITS;

/ // Call CoInitialize to initialize the COM library and then

// call CoCreateInstance to get the Task Scheduler object.

/ hr = CoInitialize(NULL); if (SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pITS); if (FAILED(hr)) { CoUninitialize(); return 1; } } else { return 1; }

/ // Call ITaskScheduler::NewWorkItem to create new task. / LPCWSTR pwszTaskName; ITask *pITask; IPersistFile *pIPersistFile; pwszTaskName = L"Test Task";

hr = pITS->NewWorkItem(pwszTaskName, // Name of task CLSID_CTask, // Class identifier

IID_ITask, // Interface identifier (IUnknown**)&pITask); // Address of task

// interface

pITS->Release(); // Release object if (FAILED(hr)) { CoUninitialize(); fprintf(stderr, "Failed calling NewWorkItem, error = 0x%xn",hr); return 1; }

/ // Call IUnknown::QueryInterface to get a pointer to

// IPersistFile and IPersistFile::Save to save

// the new task to disk. /

hr = pITask->QueryInterface(IID_IPersistFile, (void **)&pIPersistFile);

pITask->Release(); if (FAILED(hr)) { CoUninitialize(); fprintf(stderr, "Failed calling QueryInterface, error = 0x%xn",hr); return 1;

#include #include #include #include int main(int argc, char **argv){ HRESULT hr = S_OK; ITaskScheduler *pITS;

/// // Call CoInitialize to initialize the COM library and then // call CoCreateInstance to get the Task Scheduler object. /// hr = CoInitialize(NULL); if (SUCCEEDED(hr)) { hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void **) &pITS); if (FAILED(hr)) { CoUninitialize(); return 1; } } else { return 1; }

/// // Call ITaskScheduler::Activate to get the Task object. ///

ITask *pITask; LPCWSTR lpcwszTaskName; lpcwszTaskName = L"Test Task"; hr = pITS->Activate(lpcwszTaskName, IID_ITask, (IUnknown**) &pITask); pITS->Release(); if (FAILED(hr)) { wprintf(L"Failed calling ITaskScheduler::Activate: "); wprintf(L"error = 0x%xn",hr); CoUninitialize(); return 1; }

/// // Call ITask::CreateTrigger to create new trigger. ///

ITaskTrigger *pITaskTrigger; WORD piNewTrigger; hr = pITask->CreateTrigger(&piNewTrigger, &pITaskTrigger);

&pITaskTrigger); if (FAILED(hr)) { wprintf(L"Failed calling ITask::CreatTrigger: "); wprintf(L"error = 0x%xn",hr); pITask->Release(); CoUninitialize(); return 1; }

// // Define TASK_TRIGGER structure. Note that wBeginDay, // wBeginMonth, and wBeginYear must be set to a valid

// day, month, and year respectively. //

TASK_TRIGGER pTrigger; ZeroMemory(&pTrigger, sizeof (TASK_TRIGGER));

// Add code to set trigger structure? Day =1; // Required Month =1; // Required Year =1999; // Required gerSize = sizeof (TASK_TRIGGER);

Hour = 13; rType = TASK_TIME_TRIGGER_DAILY; terval = 1;

/// // Call ITaskTrigger::SetTrigger to set trigger criteria. ///

hr = pITaskTrigger->SetTrigger (&pTrigger); if (FAILED(hr)) { wprintf(L"Failed calling ITaskTrigger::SetTrigger: "); wprintf(L"error = 0x%xn",hr); pITask->Release(); pITaskTrigger->Release(); CoUninitialize(); return 1; }

/// // Call IPersistFile::Save to save trigger to disk. ///

IPersistFile *pIPersistFile; hr = pITask->QueryInterface(IID_IPersistFile, (void **)&pIPersistFile); hr = pIPersistFile->Save(NULL, TRUE); if (FAILED(hr)) { wprintf(L"Failed calling IPersistFile::Save: "); wprintf(L"error = 0x%xn",hr); pITask->Release(); pITaskTrigger->Release(); pIPersistFile->Release(); CoUninitialize(); return 1; }