오후 5:28 2002-09-05
조경민 bro@shinbiro.com
Task Scheduler SDK를 이용한 Idle Trigger 생성 예제
======================================================================
Platform SDK: Task Scheduler
C/C++ Code Example: Creating an Idle Trigger
This example creates an idle trigger for an existing task.
#include <windows.h>
#include <winbase.h>
#include <initguid.h>
#include <ole2.h>
#include <mstask.h>
#include <msterr.h>
#include <wchar.h>
int main(int argc, char **argv)
{
HRESULT hr = ERROR_SUCCESS;
ITaskScheduler *pITS;
///////////////////////////////////////////////////////////////////
// Call CoInitialize to initialize the COM library and then
// 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 = L"Test Task";
hr = pITS->Activate(lpcwszTaskName,
IID_ITask,
(IUnknown**) &pITask);
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskScheduler::Activate: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call ITask::SetIdleWait to specify idle time.
///////////////////////////////////////////////////////////////////
WORD wIdleMinutes = 3;
WORD wDeadlineMinutes = 5;
hr = pITask->SetIdleWait(wIdleMinutes,
wDeadlineMinutes);
if (FAILED(hr))
{
wprintf(L"Failed calling ITask::SetIdleWait: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call ITask::CreateTrigger to create new trigger.
///////////////////////////////////////////////////////////////////
ITaskTrigger *pITaskTrigger;
WORD piNewTrigger;
hr = pITask->CreateTrigger(&piNewTrigger,
&pITaskTrigger);
if (FAILED(hr))
{
wprintf(L"Failed calling ITask::CreatTrigger: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Define TASK_TRIGGER structure and call ITask::CreateTrigger
// to create the idle trigger.
///////////////////////////////////////////////////////////////////
TASK_TRIGGER pTrigger;
ZeroMemory(&pTrigger, sizeof (TASK_TRIGGER));
// Add code to set trigger structure.
pTrigger.wBeginDay = 1;
pTrigger.wBeginMonth = 1;
pTrigger.wBeginYear =1999;
pTrigger.cbTriggerSize = sizeof (TASK_TRIGGER);
pTrigger.TriggerType = TASK_EVENT_TRIGGER_ON_IDLE;
hr = pITaskTrigger->SetTrigger (&pTrigger);
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskTrigger::SetTrigger: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call IPersistFile::Save to save setting to disk.
///////////////////////////////////////////////////////////////////
IPersistFile *pIPersistFile;
hr = pITask->QueryInterface(IID_IPersistFile,
(void **)&pIPersistFile);
hr = pIPersistFile->Save(NULL,
TRUE);
wprintf(L"The idle trigger was set and IPersistFile::Save \n");
wprintf(L"was called to save the new trigger to disk.\n");
///////////////////////////////////////////////////////////////////
// Release all resources.
///////////////////////////////////////////////////////////////////
pITS->Release();
pITask->Release();
pIPersistFile->Release();
CoUninitialize();
return 0;
}
Platform SDK Release: August 2002 What did you think of this topic?
Let us know. Order a Platform SDK CD Online
(U.S./Canada) (International)
조경민 bro@shinbiro.com
Task Scheduler SDK를 이용한 Idle Trigger 생성 예제
======================================================================
Platform SDK: Task Scheduler
C/C++ Code Example: Creating an Idle Trigger
This example creates an idle trigger for an existing task.
#include <windows.h>
#include <winbase.h>
#include <initguid.h>
#include <ole2.h>
#include <mstask.h>
#include <msterr.h>
#include <wchar.h>
int main(int argc, char **argv)
{
HRESULT hr = ERROR_SUCCESS;
ITaskScheduler *pITS;
///////////////////////////////////////////////////////////////////
// Call CoInitialize to initialize the COM library and then
// 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 = L"Test Task";
hr = pITS->Activate(lpcwszTaskName,
IID_ITask,
(IUnknown**) &pITask);
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskScheduler::Activate: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call ITask::SetIdleWait to specify idle time.
///////////////////////////////////////////////////////////////////
WORD wIdleMinutes = 3;
WORD wDeadlineMinutes = 5;
hr = pITask->SetIdleWait(wIdleMinutes,
wDeadlineMinutes);
if (FAILED(hr))
{
wprintf(L"Failed calling ITask::SetIdleWait: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call ITask::CreateTrigger to create new trigger.
///////////////////////////////////////////////////////////////////
ITaskTrigger *pITaskTrigger;
WORD piNewTrigger;
hr = pITask->CreateTrigger(&piNewTrigger,
&pITaskTrigger);
if (FAILED(hr))
{
wprintf(L"Failed calling ITask::CreatTrigger: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Define TASK_TRIGGER structure and call ITask::CreateTrigger
// to create the idle trigger.
///////////////////////////////////////////////////////////////////
TASK_TRIGGER pTrigger;
ZeroMemory(&pTrigger, sizeof (TASK_TRIGGER));
// Add code to set trigger structure.
pTrigger.wBeginDay = 1;
pTrigger.wBeginMonth = 1;
pTrigger.wBeginYear =1999;
pTrigger.cbTriggerSize = sizeof (TASK_TRIGGER);
pTrigger.TriggerType = TASK_EVENT_TRIGGER_ON_IDLE;
hr = pITaskTrigger->SetTrigger (&pTrigger);
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskTrigger::SetTrigger: ");
wprintf(L"error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
///////////////////////////////////////////////////////////////////
// Call IPersistFile::Save to save setting to disk.
///////////////////////////////////////////////////////////////////
IPersistFile *pIPersistFile;
hr = pITask->QueryInterface(IID_IPersistFile,
(void **)&pIPersistFile);
hr = pIPersistFile->Save(NULL,
TRUE);
wprintf(L"The idle trigger was set and IPersistFile::Save \n");
wprintf(L"was called to save the new trigger to disk.\n");
///////////////////////////////////////////////////////////////////
// Release all resources.
///////////////////////////////////////////////////////////////////
pITS->Release();
pITask->Release();
pIPersistFile->Release();
CoUninitialize();
return 0;
}
Platform SDK Release: August 2002 What did you think of this topic?
Let us know. Order a Platform SDK CD Online
(U.S./Canada) (International)
'KB > MFC/Win32' 카테고리의 다른 글
MFC UNICODE 컴파일 하기 (0) | 2004.03.19 |
---|---|
간단한 LoadString (0) | 2004.03.19 |
hWnd로 프로세스 메모리 쓰기/읽기 (0) | 2004.03.19 |
HTTP Tunneling (0) | 2004.03.19 |
HTML코드를 임시파일로 저장한 파일 URL얻기 (0) | 2004.03.19 |