Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

C/C++ Code Example: Terminating a Task

This example verifies the status of a known task and terminates the task if it is running.

#include <windows.h>
#include <initguid.h>
#include <ole2.h>
#include <mstask.h>
#include <msterr.h>
#include <wchar.h>

int main(int argc, char **argv)
{
 HRESULT hr = S_OK;
 
 
 ///////////////////////////////////////////////////////////////////
 // Call CoInitialize to initialize the COM library and then
 // call CoCreateInstance to get the Task Scheduler object.
 ///////////////////////////////////////////////////////////////////
 ITaskScheduler *pITS;
 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);
 
 //Release ITaskScheduler interface.
 pITS->Release();
 
 if (FAILED(hr))
 {
 wprintf(L"Failed calling ITaskScheduler::Activate: ");
 wprintf(L"error = 0x%x\n",hr);
 CoUninitialize();
 return 1;
 }
 
 
 ///////////////////////////////////////////////////////////////////
 // Call ITask::GetStatus. Note that this method is 
 // inherited from IScheduledWorkItem.
 ///////////////////////////////////////////////////////////////////
 HRESULT phrStatus;
 
 hr = pITask->GetStatus(&phrStatus);
 
 if (FAILED(hr))
 {
 wprintf(L"Failed calling ITask::GetStatus: ");
 wprintf(L"error = 0x%x\n",hr);
 pITask->Release();
 CoUninitialize();
 return 1;
 }
 
 
 ///////////////////////////////////////////////////////////////////
 // Call ITask::Terminate if the status is SCHED_S_TASK_RUNNING.
 ///////////////////////////////////////////////////////////////////
 
 if(phrStatus==SCHED_S_TASK_RUNNING)
 {
 hr = pITask->Terminate();
 if (FAILED(hr))
 {
 wprintf(L"Failed calling ITask::Terminate: ");
 wprintf(L"error = 0x%x\n",hr);
 pITask->Release();
 CoUninitialize();
 return 1;
 }
 wprintf(L"Test Task is terminated.\n");
 }
 else
 {
 wprintf(L"Test Task is not running.\n");
 }

 // Release the ITask interface.
 pITask->Release();
 
 
 CoUninitialize();
 return 0;
}

Related topics

Task Scheduler 1.0 Examples


Feedback

Was this page helpful?

Additional resources