Win32 API 日本語リファレンス
ホームSystem.TaskScheduler › ITaskService

ITaskService

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID2faba4c7-4da9-4013-9697-20cc3fd40f85継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

登録済みタスクを管理するための Task Scheduler サービスへのアクセスを提供します。

メソッド 9

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT GetFolder(LPWSTR path, ITaskFolder** ppFolder)

登録済みタスクのフォルダーを取得します。

pathLPWSTRinoptional取得するフォルダーへのパス。パス内の最後のフォルダー名の後にバックスラッシュを付けないでください。ルートタスクフォルダーはバックスラッシュ (\) で指定します。ルートタスクフォルダー配下のタスクフォルダーパスの例としては、 \MyTaskFolder があります。パス内で現在のタスクフォルダーを '.' 文字で指定することはできず、親タスクフォルダーを '..' 文字で指定することもできません。
ppFolderITaskFolder**out

要求されたフォルダーに対する ITaskFolder インターフェース。

NULLITaskFolder インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT GetRunningTasks(INT flags, IRunningTaskCollection** ppRunningTasks)

実行中のタスクのコレクションを取得します。

flagsINTinTASK_ENUM_FLAGS 列挙体の値。0 を渡すと、非表示タスクを除く実行中のタスクのコレクションを返します。
ppRunningTasksIRunningTaskCollection**out

現在実行中のタスクを含む IRunningTaskCollection インターフェース。

NULLIRunningTaskCollection インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

説明
E_INVALIDARG
メソッド呼び出しで無効な引数が指定されました。flags パラメーターに 0 以外の値を渡すと E_INVALIDARG が返されます。
S_OK
操作は正常に完了しました。
E_POINTER
retVal パラメーターに NULL が渡されました。
HRESULT_FROM_WIN32(ERROR_ONLY_IF_CONNECTED)
ユーザーがサービスに接続していません。
vtbl 9 HRESULT NewTask(DWORD flags, ITaskDefinition** ppDefinition)

設定とプロパティを入力し、その後 ITaskFolder::RegisterTaskDefinition メソッドを使用して登録するための、空のタスク定義オブジェクトを返します。

flagsDWORDinこのパラメーターは将来の使用のために予約されており、0 に設定する必要があります。
ppDefinitionITaskDefinition**out

新しいタスクの作成に必要なすべての情報を指定するタスク定義。

NULLITaskDefinition インターフェースポインターへの参照を渡してください。NULL でないポインターを参照すると、ポインターが上書きされるためメモリリークが発生する可能性があります。

返された ITaskDefinition ポインターは、使用後に解放する必要があります。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

リターンコード/値 説明
S_OK
0x0
メソッドはエラーなしで正常に返されました。
E_POINTER
0x80004003
ppDefinition パラメーターに NULL が渡されました。NULLITaskDefinition インターフェースポインターへの参照を渡してください。
E_INVALIDARG
0x80070057
flags パラメーターに 0 以外の値が渡されました。
vtbl 10 HRESULT Connect(VARIANT serverName, VARIANT user, VARIANT domain, VARIANT password)

リモートコンピューターに接続し、このインターフェースに対する以降のすべての呼び出しをリモートセッションに関連付けます。

serverNameVARIANTin接続先のコンピューターの名前。serverName パラメーターが空の場合、このメソッドはローカルコンピューターで実行されます。
userVARIANTinコンピューターへの接続時に使用されるユーザー名。user が指定されていない場合は、現在のトークンが使用されます。
domainVARIANTinuser パラメーターで指定されたユーザーのドメイン。
passwordVARIANTinコンピューターへの接続に使用されるパスワード。ユーザー名とパスワードが指定されていない場合は、現在のトークンが使用されます。

戻り値

このメソッドは、次のいずれかの値を返すことがあります。

リターンコード/値 説明
S_OK
0
操作は正常に完了しました。
E_ACCESS_DENIED
0x80070005
Task Scheduler サービスへの接続が拒否されました。
SCHED_E_SERVICE_NOT_RUNNING
0x80041315
Task Scheduler サービスが実行されていません。
E_OUTOFMEMORY
0x8007000e
操作を完了するのに十分なメモリがアプリケーションにないか、userpassworddomain のうち少なくとも 1 つが null で、かつ 1 つが null 以外の値になっています。
ERROR_BAD_NETPATH
53
このエラーは次の状況で返されます。
  • serverName パラメーターで指定されたコンピューター名が存在しません。
  • Windows Server 2003 または Windows XP のコンピューターに接続しようとしていて、リモートコンピューターでファイルとプリンターの共有のファイアウォール例外が有効になっていないか、Remote Registry サービスが実行されていない場合。
  • Windows Vista のコンピューターに接続しようとしていて、リモートコンピューターでリモートのタスク スケジュール管理のファイアウォール例外とファイルとプリンターの共有のファイアウォール例外が有効になっていないか、Remote Registry サービスが実行されていない場合。
ERROR_NOT_SUPPORTED
50
Windows Vista のコンピューターからリモートの Windows XP または Windows Server 2003 のコンピューターに接続する場合、userpassworddomain パラメーターを指定することはできません。

解説(Remarks)

ITaskService::Connect メソッドは、他の ITaskService メソッドを呼び出す前に呼び出す必要があります。

Windows Vista のコンピューターからリモートの Windows Vista のコンピューターに接続する場合は、リモートコンピューターでリモートのタスク スケジュール管理のファイアウォール例外を許可する必要があります。この例外を許可するには、スタートコントロール パネルセキュリティWindows ファイアウォールによるプログラムの許可 の順にクリックし、リモートのタスク スケジュール管理 チェックボックスをオンにします。次に、Windows ファイアウォール設定ダイアログボックスで OK ボタンをクリックします。

Windows Vista のコンピューターからリモートの Windows XP または Windows Server 2003 のコンピューターに接続する場合は、リモートコンピューターでファイルとプリンターの共有のファイアウォール例外を許可する必要があります。この例外を許可するには、スタートコントロール パネル の順にクリックし、Windows ファイアウォール をダブルクリックして、例外 タブを選択し、ファイルとプリンターの共有 のファイアウォール例外を選択します。次に、Windows ファイアウォールダイアログボックスで OK ボタンをクリックします。リモートコンピューターでは Remote Registry サービスも実行されている必要があります。

リモートタスクのスキーマが現在のマシンでサポートされていない場合、ITaskService::Connect はタスク定義の読み取り中にエラー SCHED_E_INVALIDVALUE を返すことがあります。現在のマシンがサポートする最上位のスキーマバージョンを確認するには、 ITaskService::HighestVersion プロパティを確認してください。
vtbl 11 HRESULT get_Connected(VARIANT_BOOL* pConnected)

Task Scheduler サービスに接続されているかどうかを示す Boolean 値を取得します。

pConnectedVARIANT_BOOL*outタスクスケジューラーサービスに接続済みかどうかを受け取る VARIANT_BOOL へのポインタである。
vtbl 12 HRESULT get_TargetServer(LPWSTR* pServer)

ユーザーが接続している Task Scheduler サービスを実行しているコンピューターの名前を取得します。

pServerLPWSTR*out接続先のサーバー名を受け取る出力ポインタである。SysFreeString で解放する。

解説(Remarks)

このプロパティは、ユーザーが pServer パラメーターに IP アドレス、Localhost、または '.' を渡した場合は空の文字列を返し、ユーザーがパラメーター値を渡さなかった場合は Task Scheduler サービスを実行しているコンピューターの名前を返します。

vtbl 13 HRESULT get_ConnectedUser(LPWSTR* pUser)

Task Scheduler サービスに接続されているユーザーの名前を取得します。

pUserLPWSTR*out現在の接続に使用されているユーザー名を受け取る出力ポインタである。SysFreeString で解放する。
vtbl 14 HRESULT get_ConnectedDomain(LPWSTR* pDomain)

TargetServer コンピューターが接続されているドメインの名前を取得します。

pDomainLPWSTR*out現在の接続に使用されているドメイン名を受け取る出力ポインタである。SysFreeString で解放する。
vtbl 15 HRESULT get_HighestVersion(DWORD* pVersion)

コンピューターがサポートする Task Scheduler の最上位バージョンを示します。

pVersionDWORD*out接続先で利用可能なタスクスケジューラーの最高バージョンを受け取る変数へのポインタである。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。