ITaskTrigger
COM公式ドキュメント
タスクのトリガーへのアクセスと設定を行うためのメソッドを提供します。トリガーは、タスクの開始時刻、繰り返し条件、およびタスクの実行タイミングを制御するその他のパラメーターを指定します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetTrigger メソッドは、タスクトリガーのトリガー条件を設定します。
| pTrigger | TASK_TRIGGER* | in | 新しいタスクトリガーを定義する値を格納した TASK_TRIGGER 構造体へのポインター。 |
戻り値
SetTrigger メソッドは、次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| 操作は成功しました。 | |
| 引数が無効です。 | |
| 使用可能なメモリが不足しています。 |
解説(Remarks)
TASK_TRIGGER 構造体の wBeginDay、wBeginMonth、wBeginYear の各メンバーには、それぞれ有効な日、月、年を設定する必要があります。
1 つのタスクには任意の数のトリガーを関連付けることができます。タスクが実行される時刻は、そのタスクに定義されたすべてのトリガーの和集合になります。
これらの新しいトリガー設定でタスクを更新するには、アプリケーションは SetTrigger を呼び出した後に IPersistFile::Save メソッドを呼び出す必要があります。
Examples
次のコードは、このメソッドの変数宣言と呼び出し構文を、 TASK_TRIGGER の必須メンバーを含めて示しています。新しいトリガーを作成する際のトリガー条件の設定については、Creating a New Trigger を参照してください。
HRESULT hr = S_OK;
TASK_TRIGGER Trigger;
ZeroMemory(&Trigger, sizeof(TASK_TRIGGER));
Trigger.cbTriggerSize = sizeof(TASK_TRIGGER);
Trigger.wBeginDay = 1;
Trigger.wBeginMonth = 1;
Trigger.wBeginYear = 1999;
// pITaskTrigger is a previously assigned ITaskTrigger pointer.
hr = pITaskTrigger->SetTrigger(&Trigger);
if (FAILED(hr))
{
printf("Failed SetTrigger\n");
exit(1);
}
GetTrigger メソッドは、現在のタスクトリガーを取得します。
| pTrigger | TASK_TRIGGER* | out | 現在のタスクトリガーを格納する TASK_TRIGGER 構造体へのポインター。この構造体をこのメソッドに渡す前に、 TASK_TRIGGER 構造体の cbTriggerSize メンバーにタスクトリガー構造体のサイズを設定する必要があります。 |
戻り値
GetTrigger メソッドは、次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| 操作は成功しました。 | |
| pTrigger パラメーターが無効です。 | |
| 使用可能なメモリが不足しています。 |
解説(Remarks)
スケジュールされた作業項目には、1 つ以上のトリガーを定義できます。作業項目が実行される時刻は、その項目に定義されたすべてのトリガーの和集合になります。
GetTriggerString メソッドは、現在のタスクトリガーを文字列の形式で取得します。この文字列は、タスク スケジューラのユーザーインターフェイスに "At 2PM every day, starting 5/11/97." のような形式で表示されます。
| ppwszTrigger | LPWSTR* | out | 現在のタスクトリガーを説明する null 終端文字列へのポインターへのポインター。 GetTriggerString を呼び出したメソッドは、CoTaskMemFree 関数を使用してこの文字列を解放する責任があります。 |
戻り値
GetTriggerString メソッドは、次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| 操作は成功しました。 | |
| 引数が無効です。 | |
| 使用可能なメモリが不足しています。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITaskTrigger "{148BD52B-A2AB-11CE-B11F-00AA00530503}" #usecom global ITaskTrigger IID_ITaskTrigger "{}" #comfunc global ITaskTrigger_SetTrigger 3 var #comfunc global ITaskTrigger_GetTrigger 4 var #comfunc global ITaskTrigger_GetTriggerString 5 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ITaskTrigger "{148BD52B-A2AB-11CE-B11F-00AA00530503}" #usecom global ITaskTrigger IID_ITaskTrigger "{}" #comfunc global ITaskTrigger_SetTrigger 3 sptr #comfunc global ITaskTrigger_GetTrigger 4 sptr #comfunc global ITaskTrigger_GetTriggerString 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。