ITaskService
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
登録済みタスクを管理するための Task Scheduler サービスへのアクセスを提供します。
メソッド 9
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
登録済みタスクのフォルダーを取得します。
| path | LPWSTR | inoptional | 取得するフォルダーへのパス。パス内の最後のフォルダー名の後にバックスラッシュを付けないでください。ルートタスクフォルダーはバックスラッシュ (\) で指定します。ルートタスクフォルダー配下のタスクフォルダーパスの例としては、 \MyTaskFolder があります。パス内で現在のタスクフォルダーを '.' 文字で指定することはできず、親タスクフォルダーを '..' 文字で指定することもできません。 |
| ppFolder | ITaskFolder** | out | 要求されたフォルダーに対する ITaskFolder インターフェース。 NULL の ITaskFolder インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
実行中のタスクのコレクションを取得します。
| flags | INT | in | TASK_ENUM_FLAGS 列挙体の値。0 を渡すと、非表示タスクを除く実行中のタスクのコレクションを返します。 |
| ppRunningTasks | IRunningTaskCollection** | out | 現在実行中のタスクを含む IRunningTaskCollection インターフェース。 NULL の IRunningTaskCollection インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 説明 | |
|---|---|
| メソッド呼び出しで無効な引数が指定されました。flags パラメーターに 0 以外の値を渡すと E_INVALIDARG が返されます。 | |
| 操作は正常に完了しました。 | |
| retVal パラメーターに NULL が渡されました。 | |
|
ユーザーがサービスに接続していません。 |
設定とプロパティを入力し、その後 ITaskFolder::RegisterTaskDefinition メソッドを使用して登録するための、空のタスク定義オブジェクトを返します。
| flags | DWORD | in | このパラメーターは将来の使用のために予約されており、0 に設定する必要があります。 |
| ppDefinition | ITaskDefinition** | out | 新しいタスクの作成に必要なすべての情報を指定するタスク定義。 NULL の ITaskDefinition インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。 返された ITaskDefinition ポインターは、使用後に解放する必要があります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| リターンコード/値 | 説明 |
|---|---|
|
メソッドはエラーなしで正常に返されました。 |
|
ppDefinition パラメーターに NULL が渡されました。NULL の ITaskDefinition インターフェースポインターへの参照を渡してください。 |
|
flags パラメーターに 0 以外の値が渡されました。 |
リモートコンピューターに接続し、このインターフェースに対する以降のすべての呼び出しをリモートセッションに関連付けます。
| serverName | VARIANT | in | 接続先のコンピューターの名前。serverName パラメーターが空の場合、このメソッドはローカルコンピューターで実行されます。 |
| user | VARIANT | in | コンピューターへの接続時に使用されるユーザー名。user が指定されていない場合は、現在のトークンが使用されます。 |
| domain | VARIANT | in | user パラメーターで指定されたユーザーのドメイン。 |
| password | VARIANT | in | コンピューターへの接続に使用されるパスワード。ユーザー名とパスワードが指定されていない場合は、現在のトークンが使用されます。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| リターンコード/値 | 説明 |
|---|---|
|
操作は正常に完了しました。 |
|
Task Scheduler サービスへの接続が拒否されました。 |
|
Task Scheduler サービスが実行されていません。 |
|
操作を完了するのに十分なメモリがアプリケーションにないか、user、password、domain のうち少なくとも 1 つが null で、かつ 1 つが null 以外の値になっています。 |
このエラーは次の状況で返されます。
|
|
| Windows Vista のコンピューターからリモートの Windows XP または Windows Server 2003 のコンピューターに接続する場合、user、password、domain パラメーターを指定することはできません。 |
解説(Remarks)
ITaskService::Connect メソッドは、他の ITaskService メソッドを呼び出す前に呼び出す必要があります。
Windows Vista のコンピューターからリモートの Windows Vista のコンピューターに接続する場合は、リモートコンピューターでリモートのタスク スケジュール管理のファイアウォール例外を許可する必要があります。この例外を許可するには、スタート、コントロール パネル、セキュリティ、Windows ファイアウォールによるプログラムの許可 の順にクリックし、リモートのタスク スケジュール管理 チェックボックスをオンにします。次に、Windows ファイアウォール設定ダイアログボックスで OK ボタンをクリックします。
Windows Vista のコンピューターからリモートの Windows XP または Windows Server 2003 のコンピューターに接続する場合は、リモートコンピューターでファイルとプリンターの共有のファイアウォール例外を許可する必要があります。この例外を許可するには、スタート、コントロール パネル の順にクリックし、Windows ファイアウォール をダブルクリックして、例外 タブを選択し、ファイルとプリンターの共有 のファイアウォール例外を選択します。次に、Windows ファイアウォールダイアログボックスで OK ボタンをクリックします。リモートコンピューターでは Remote Registry サービスも実行されている必要があります。
Task Scheduler サービスに接続されているかどうかを示す Boolean 値を取得します。
| pConnected | VARIANT_BOOL* | out | タスクスケジューラーサービスに接続済みかどうかを受け取る VARIANT_BOOL へのポインタである。 |
ユーザーが接続している Task Scheduler サービスを実行しているコンピューターの名前を取得します。
| pServer | LPWSTR* | out | 接続先のサーバー名を受け取る出力ポインタである。SysFreeString で解放する。 |
解説(Remarks)
このプロパティは、ユーザーが pServer パラメーターに IP アドレス、Localhost、または '.' を渡した場合は空の文字列を返し、ユーザーがパラメーター値を渡さなかった場合は Task Scheduler サービスを実行しているコンピューターの名前を返します。
Task Scheduler サービスに接続されているユーザーの名前を取得します。
| pUser | LPWSTR* | out | 現在の接続に使用されているユーザー名を受け取る出力ポインタである。SysFreeString で解放する。 |
TargetServer コンピューターが接続されているドメインの名前を取得します。
| pDomain | LPWSTR* | out | 現在の接続に使用されているドメイン名を受け取る出力ポインタである。SysFreeString で解放する。 |
コンピューターがサポートする Task Scheduler の最上位バージョンを示します。
| pVersion | DWORD* | out | 接続先で利用可能なタスクスケジューラーの最高バージョンを受け取る変数へのポインタである。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITaskService "{2FABA4C7-4DA9-4013-9697-20CC3FD40F85}" #usecom global ITaskService IID_ITaskService "{}" #comfunc global ITaskService_GetFolder 7 wstr,sptr #comfunc global ITaskService_GetRunningTasks 8 int,sptr #comfunc global ITaskService_NewTask 9 int,sptr #comfunc global ITaskService_Connect 10 int,int,int,int #comfunc global ITaskService_get_Connected 11 var #comfunc global ITaskService_get_TargetServer 12 var #comfunc global ITaskService_get_ConnectedUser 13 var #comfunc global ITaskService_get_ConnectedDomain 14 var #comfunc global ITaskService_get_HighestVersion 15 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITaskService "{2FABA4C7-4DA9-4013-9697-20CC3FD40F85}" #usecom global ITaskService IID_ITaskService "{}" #comfunc global ITaskService_GetFolder 7 wstr,sptr #comfunc global ITaskService_GetRunningTasks 8 int,sptr #comfunc global ITaskService_NewTask 9 int,sptr #comfunc global ITaskService_Connect 10 int,int,int,int #comfunc global ITaskService_get_Connected 11 sptr #comfunc global ITaskService_get_TargetServer 12 sptr #comfunc global ITaskService_get_ConnectedUser 13 sptr #comfunc global ITaskService_get_ConnectedDomain 14 sptr #comfunc global ITaskService_get_HighestVersion 15 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。