IFaxDocument
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
IFaxDocument インターフェイスは、FAX クライアント アプリケーションが FAX ドキュメントを作成し、処理のために FAX サービスへ送信するために使用するメッセージング オブジェクトを定義します。
解説(Remarks)
IFaxDocument および IFaxDocument2 の既定の実装は、FaxDocument オブジェクトとして提供されます。
メソッド 34
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
IFaxDocument::get_Body プロパティは、FAX の本文を構成するファイルへのパスを提供します。FAX の本文は、カバー ページ以外の FAX ページで構成されます。(Get)
| pbstrBody | LPWSTR* | out | FAX本文ドキュメントのファイルパスを受け取るBSTR出力先。 |
解説(Remarks)
FAX の本文として送信できるドキュメントの例としては、テキスト ファイル (.txt)、Microsoft Word の文書 (.doc)、Microsoft Excel のスプレッドシート (.xls) などがあります。クライアント コンピューターから FAX を送信する場合、本文はそのコンピューターにインストールされているアプリケーションに関連付けられている必要があり、そのアプリケーションは PrintTo 動詞をサポートしている必要があります。そうでない場合、FAX は失敗します。
Bodies プロパティと IFaxDocument::get_Body プロパティのいずれか一方は NULL である必要があります。ConnectedSubmit2 または Submit2 (いずれも Windows Vista 以降でのみ使用可能) で送信する場合は、Bodies を使用する必要があります。ConnectedSubmit または IFaxDocument::Submit で送信する場合は、IFaxDocument::get_Body を使用する必要があります。
IFaxDocument::get_Body プロパティは、FAX の本文を構成するファイルへのパスを提供します。FAX の本文は、カバー ページ以外の FAX ページで構成されます。(Put)
| bstrBody | LPWSTR | in | 送信する本文ドキュメントのファイルパス。 |
解説(Remarks)
FAX の本文として送信できるドキュメントの例としては、テキスト ファイル (.txt)、Microsoft Word の文書 (.doc)、Microsoft Excel のスプレッドシート (.xls) などがあります。クライアント コンピューターから FAX を送信する場合、本文はそのコンピューターにインストールされているアプリケーションに関連付けられている必要があり、そのアプリケーションは PrintTo 動詞をサポートしている必要があります。そうでない場合、FAX は失敗します。
Bodies プロパティと IFaxDocument::get_Body プロパティのいずれか一方は NULL である必要があります。ConnectedSubmit2 または Submit2 (いずれも Windows Vista 以降でのみ使用可能) で送信する場合は、Bodies を使用する必要があります。ConnectedSubmit または IFaxDocument::Submit で送信する場合は、IFaxDocument::get_Body を使用する必要があります。
FAX ドキュメントの送信者に関する情報を格納したオブジェクトを取得します。
| ppFaxSender | IFaxSender** | out | 送信者情報を表すIFaxSenderを受け取る出力先。 |
IFaxDocument::get_Recipients プロパティは、FAX ドキュメントの 1 人以上の受信者から成るコレクションを取得します。
| ppFaxRecipients | IFaxRecipients** | out | 宛先コレクションを表すIFaxRecipientsを受け取る出力先。 |
IFaxDocument::get_CoverPage プロパティは、FAX ドキュメントに関連付けるカバー ページ テンプレート ファイル (.cov) の名前を格納した null 終端文字列です。(Get)
| pbstrCoverPage | LPWSTR* | out | 送付状(カバーページ)名またはパスを受け取るBSTR出力先。 |
解説(Remarks)
サーバー ベースのカバー ページ ファイルを指定するには、IFaxDocument::get_CoverPageType プロパティを fcptSERVER に設定する必要があります。
ローカルまたは個人用のカバー ページ ファイルを指定するには、IFaxDocument::get_CoverPageType プロパティを fcptLOCAL に設定する必要があります。
IFaxDocument::get_CoverPage プロパティは、FAX ドキュメントに関連付けるカバー ページ テンプレート ファイル (.cov) の名前を格納した null 終端文字列です。(Put)
| bstrCoverPage | LPWSTR | in | 設定する送付状名またはパス。 |
解説(Remarks)
サーバー ベースのカバー ページ ファイルを指定するには、IFaxDocument::get_CoverPageType プロパティを fcptSERVER に設定する必要があります。
ローカルまたは個人用のカバー ページ ファイルを指定するには、IFaxDocument::get_CoverPageType プロパティを fcptLOCAL に設定する必要があります。
IFaxDocument::get_Subject プロパティは、FAX のカバー ページの件名フィールドの内容を格納した null 終端文字列です。(Get)
| pbstrSubject | LPWSTR* | out | FAXの件名を受け取るBSTR出力先。 |
IFaxDocument::get_Subject プロパティは、FAX のカバー ページの件名フィールドの内容を格納した null 終端文字列です。(Put)
| bstrSubject | LPWSTR | in | 設定するFAXの件名。 |
IFaxDocument::get_Note プロパティは、FAX のカバー ページのメモ フィールドの内容を格納した null 終端文字列です。(Get)
| pbstrNote | LPWSTR* | out | 送付状に記載するメモ本文を受け取るBSTR出力先。 |
IFaxDocument::get_Note プロパティは、FAX のカバー ページのメモ フィールドの内容を格納した null 終端文字列です。(Put)
| bstrNote | LPWSTR | in | 設定する送付状のメモ本文。 |
IFaxDocument::get_ScheduleTime プロパティは、処理のために FAX を FAX サービスへ送信する時刻を示します。(Get)
| pdateScheduleTime | DOUBLE* | out | 送信予定日時をDATE値で受け取る出力先。 |
解説(Remarks)
指定した時刻が既に過ぎている場合、FAX サービスはデバイスが利用可能になり次第 FAX を送信します。既定では IFaxDocument::get_ScheduleTime は 0 に設定されており、時刻が指定されていないことを意味します。
なお、IFaxDocument::get_ScheduleType プロパティを fstSpecific_TIME に設定しない限り、FAX サービスはこのパラメーターを無視します。
IFaxDocument::get_ScheduleTime プロパティは、処理のために FAX を FAX サービスへ送信する時刻を示します。(Put)
| dateScheduleTime | DOUBLE | in | 設定する送信予定日時のDATE値。 |
解説(Remarks)
指定した時刻が既に過ぎている場合、FAX サービスはデバイスが利用可能になり次第 FAX を送信します。既定では IFaxDocument::get_ScheduleTime は 0 に設定されており、時刻が指定されていないことを意味します。
なお、IFaxDocument::get_ScheduleType プロパティを fstSpecific_TIME に設定しない限り、FAX サービスはこのパラメーターを無視します。
IFaxDocument::get_ReceiptAddress プロパティは、FAX ジョブが最終状態に達したときに FAX サービスが配信受信確認を送信するメール アドレスを示す null 終端文字列です。(Get)
| pbstrReceiptAddress | LPWSTR* | out | 送達確認の送付先アドレスを受け取るBSTR出力先。 |
解説(Remarks)
このプロパティは、ドキュメントの ReceiptType プロパティが frtMail に設定されている場合、つまり配信受信確認がメールで送信される場合にのみ意味を持ちます。
IFaxDocument::get_ReceiptAddress プロパティは、FAX ジョブが最終状態に達したときに FAX サービスが配信受信確認を送信するメール アドレスを示す null 終端文字列です。(Put)
| bstrReceiptAddress | LPWSTR | in | 設定する送達確認の送付先(メールアドレス等)。 |
解説(Remarks)
このプロパティは、ドキュメントの ReceiptType プロパティが frtMail に設定されている場合、つまり配信受信確認がメールで送信される場合にのみ意味を持ちます。
IFaxDocument::get_DocumentName プロパティは、FAX ドキュメントの表示に使用するわかりやすい名前を格納した null 終端文字列です。この値は表示のみを目的としています。(Get)
| pbstrDocumentName | LPWSTR* | out | ジョブ表示用のドキュメント名を受け取るBSTR出力先。 |
IFaxDocument::get_DocumentName プロパティは、FAX ドキュメントの表示に使用するわかりやすい名前を格納した null 終端文字列です。この値は表示のみを目的としています。(Put)
| bstrDocumentName | LPWSTR | in | 設定するジョブ表示用ドキュメント名。 |
| plCallHandle | INT* | out | 既存のTAPI通話ハンドルを受け取る出力先。 |
| lCallHandle | INT | in | 再利用する既存のTAPI通話ハンドル。 |
IFaxDocument::get_CoverPageType プロパティは、指定されたカバー ページ テンプレート ファイル (.cov) がサーバー ベースのカバー ページ ファイルか、ローカル コンピューター ベースのカバー ページ ファイルかを示す列挙型の値です。(Get)
| pCoverPageType | FAX_COVERPAGE_TYPE_ENUM* | out | 送付状の種別を表すFAX_COVERPAGE_TYPE_ENUMを受け取る出力先。 |
解説(Remarks)
既定では IFaxDocument::get_CoverPageType は fcptNONE に設定されており、ファイルを使用しないことを示します。
カバー ページの名前は IFaxDocument::get_CoverPage プロパティで指定します。
IFaxDocument::get_CoverPageType プロパティは、指定されたカバー ページ テンプレート ファイル (.cov) がサーバー ベースのカバー ページ ファイルか、ローカル コンピューター ベースのカバー ページ ファイルかを示す列挙型の値です。(Put)
| CoverPageType | FAX_COVERPAGE_TYPE_ENUM | in | 設定する送付状種別FAX_COVERPAGE_TYPE_ENUM値(サーバー/ローカル)。 |
解説(Remarks)
既定では IFaxDocument::get_CoverPageType は fcptNONE に設定されており、ファイルを使用しないことを示します。
カバー ページの名前は IFaxDocument::get_CoverPage プロパティで指定します。
IFaxDocument::get_ScheduleType プロパティは、FAX ジョブをいつスケジュールするかを示します。たとえば、FAX サービスが FAX を直ちに送信するか、指定した時刻に送信するか、あらかじめ定義された割引期間中に送信するかを指定できます。(Get)
| pScheduleType | FAX_SCHEDULE_TYPE_ENUM* | out | 送信スケジュール種別FAX_SCHEDULE_TYPE_ENUMを受け取る出力先。 |
解説(Remarks)
既定では IFaxDocument::get_ScheduleType は fstNOW に設定されており、デバイスが利用可能になり次第 FAX が送信されることを示します。
IFaxDocument::get_ScheduleType プロパティは、FAX ジョブをいつスケジュールするかを示します。たとえば、FAX サービスが FAX を直ちに送信するか、指定した時刻に送信するか、あらかじめ定義された割引期間中に送信するかを指定できます。(Put)
| ScheduleType | FAX_SCHEDULE_TYPE_ENUM | in | 設定する送信スケジュール種別FAX_SCHEDULE_TYPE_ENUM値(即時/指定時刻/割引時間)。 |
解説(Remarks)
既定では IFaxDocument::get_ScheduleType は fstNOW に設定されており、デバイスが利用可能になり次第 FAX が送信されることを示します。
IFaxDocument::get_ReceiptType プロパティは、FAX ジョブが最終状態に達したときに配信する受信確認の種類を指定します。(Get)
| pReceiptType | FAX_RECEIPT_TYPE_ENUM* | out | 送達確認の種別FAX_RECEIPT_TYPE_ENUMを受け取る出力先。 |
解説(Remarks)
FAX サービスは、FAX が正常に完了したとき、または FAX の送信が失敗したときに、FAX の送信者にレポート (配信受信確認) を送信します。
メールで受信確認を送信する場合は、IFaxDocument::get_ReceiptAddress プロパティにアドレスを指定する必要があります。受信確認の種類が frtMSGBOX に設定されている場合、メッセージ ボックスはドキュメントの送信元のコンピューターに表示されます。既定では ReceiptType は frtNONE に設定されており、受信確認を送信しないことを示します。
IFaxDocument::get_ReceiptType プロパティは、FAX ジョブが最終状態に達したときに配信する受信確認の種類を指定します。(Put)
| ReceiptType | FAX_RECEIPT_TYPE_ENUM | in | 設定する送達確認種別FAX_RECEIPT_TYPE_ENUM値(メール/なし等)。 |
解説(Remarks)
FAX サービスは、FAX が正常に完了したとき、または FAX の送信が失敗したときに、FAX の送信者にレポート (配信受信確認) を送信します。
メールで受信確認を送信する場合は、IFaxDocument::get_ReceiptAddress プロパティにアドレスを指定する必要があります。受信確認の種類が frtMSGBOX に設定されている場合、メッセージ ボックスはドキュメントの送信元のコンピューターに表示されます。既定では ReceiptType は frtNONE に設定されており、受信確認を送信しないことを示します。
IFaxDocument::get_GroupBroadcastReceipts プロパティは、同報送信の受信者ごとに個別の配信受信確認を送信するか、すべての受信者をまとめた集約受信確認を送信するかを示すブール値です。(Get)
| pbUseGrouping | VARIANT_BOOL* | out | 同報送信の送達確認をまとめるかをVARIANT_BOOLで受け取る出力先。 |
IFaxDocument::get_GroupBroadcastReceipts プロパティは、同報送信の受信者ごとに個別の配信受信確認を送信するか、すべての受信者をまとめた集約受信確認を送信するかを示すブール値です。(Put)
| bUseGrouping | VARIANT_BOOL | in | 同報送信の送達確認をまとめるか否かのVARIANT_BOOL値。 |
IFaxDocument::get_Priority プロパティは、FAX の送信時に使用する優先度 (通常、低、高など) を指定します。(Get)
| pPriority | FAX_PRIORITY_TYPE_ENUM* | out | ジョブの優先度FAX_PRIORITY_TYPE_ENUMを受け取る出力先。 |
解説(Remarks)
既定では IFaxDocument::get_Priority は fptLow に設定されており、優先度が低いことを示します。
IFaxDocument::get_Priority プロパティは、FAX の送信時に使用する優先度 (通常、低、高など) を指定します。(Put)
| Priority | FAX_PRIORITY_TYPE_ENUM | in | 設定するジョブ優先度FAX_PRIORITY_TYPE_ENUM値(低/中/高)。 |
解説(Remarks)
既定では IFaxDocument::get_Priority は fptLow に設定されており、優先度が低いことを示します。
| ppTapiConnection | IDispatch** | out | 関連付けられたTAPI接続オブジェクトのIDispatchを受け取る出力先。 |
| pTapiConnection | IDispatch* | inoptional | 設定するTAPI接続オブジェクトのIDispatch参照。 |
IFaxDocument::Submit メソッドは、1 つの FAX ドキュメントを処理のために FAX サービスへ送信します。
| bstrFaxServerName | LPWSTR | in | FAX サーバーを指定する BSTR です。このパラメーターが NULL または空の文字列の場合、ローカルの FAX サーバーが指定されます。 |
| pvFaxOutgoingJobIDs | VARIANT* | out | FAX の受信者ごとに 1 つずつ、送信ジョブ ID のコレクションを指定する VARIANT です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
ドキュメントを送信する際には、サーバー名を指定する必要があります。ローカル サーバーにドキュメントを送信するには、bstrFaxServerName パラメーターを NULL または空の文字列に設定します。このメソッドは、FAX の受信者ごとに 1 つずつ、FAX ジョブ ID のコレクションを返します。
IFaxDocument::Submit メソッドが成功するには、IFaxDocument インターフェイスに少なくとも 1 人の受信者と、カバー ページまたは FAX 本文のいずれかが設定されている必要があります。このメソッドは、サーバー (リモートまたはローカル) がローカル コンピューターにネットワーク プリンターとしてインストールされている場合にのみ使用できます。
このメソッドは、Windows XP Home Edition または Windows XP Professional を実行している FAX サーバーへのリモート接続ではサポートされておらず、エラー FAX_E_NOT_SUPPORTED_ON_THIS_SKU を返します。
このメソッドを使用するには、FAX ドキュメントの Priority に応じて、farSUBMIT_LOW、farSUBMIT_NORMAL、または farSUBMIT_HIGH のアクセス権がユーザーに必要です。
IFaxDocument::ConnectedSubmit メソッドは、1 つの FAX ドキュメントを接続済みの IFaxServer へ送信します。このメソッドは、FAX の受信者ごとに 1 つずつ、FAX ジョブ ID 文字列の配列を返します。
| pFaxServer | IFaxServer* | inoptional | 接続済みの FAX サーバーを指定する IFaxServer インターフェイスです。 |
| pvFaxOutgoingJobIDs | VARIANT* | out | FAX の受信者ごとに 1 つずつ、送信ジョブ ID 文字列の配列を保持する VARIANT です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドを使用するには、FAX ドキュメントの IFaxDocument::get_Priority に応じて、farSUBMIT_LOW、farSUBMIT_NORMAL、または farSUBMIT_HIGH のアクセス権がユーザーに必要です。
IFaxDocument::get_AttachFaxToReceipt プロパティは、FAX を受信確認に添付するかどうかを示します。(Get)
| pbAttachFax | VARIANT_BOOL* | out | 送達確認にFAX画像を添付するかをVARIANT_BOOLで受け取る出力先。 |
解説(Remarks)
既定では IFaxDocument::get_AttachFaxToReceipt は FALSE に設定されています。
カバー ページのみで構成される FAX を複数の受信者に送信する場合、FAX の内容が受信者ごとに異なるため、その FAX を受信確認に添付することはできません。FAX 本文がある場合は、受信者が複数であっても本文を受信確認に添付できます。
IFaxDocument::get_AttachFaxToReceipt プロパティは、FAX を受信確認に添付するかどうかを示します。(Put)
| bAttachFax | VARIANT_BOOL | in | 送達確認にFAX画像を添付するか否かのVARIANT_BOOL値。 |
解説(Remarks)
既定では IFaxDocument::get_AttachFaxToReceipt は FALSE に設定されています。
カバー ページのみで構成される FAX を複数の受信者に送信する場合、FAX の内容が受信者ごとに異なるため、その FAX を受信確認に添付することはできません。FAX 本文がある場合は、受信者が複数であっても本文を受信確認に添付できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFaxDocument "{B207A246-09E3-4A4E-A7DC-FEA31D29458F}" #usecom global IFaxDocument IID_IFaxDocument "{0F3F9F91-C838-415E-A4F3-3E828CA445E0}" #comfunc global IFaxDocument_get_Body 7 var #comfunc global IFaxDocument_put_Body 8 wstr #comfunc global IFaxDocument_get_Sender 9 sptr #comfunc global IFaxDocument_get_Recipients 10 sptr #comfunc global IFaxDocument_get_CoverPage 11 var #comfunc global IFaxDocument_put_CoverPage 12 wstr #comfunc global IFaxDocument_get_Subject 13 var #comfunc global IFaxDocument_put_Subject 14 wstr #comfunc global IFaxDocument_get_Note 15 var #comfunc global IFaxDocument_put_Note 16 wstr #comfunc global IFaxDocument_get_ScheduleTime 17 var #comfunc global IFaxDocument_put_ScheduleTime 18 double #comfunc global IFaxDocument_get_ReceiptAddress 19 var #comfunc global IFaxDocument_put_ReceiptAddress 20 wstr #comfunc global IFaxDocument_get_DocumentName 21 var #comfunc global IFaxDocument_put_DocumentName 22 wstr #comfunc global IFaxDocument_get_CallHandle 23 var #comfunc global IFaxDocument_put_CallHandle 24 int #comfunc global IFaxDocument_get_CoverPageType 25 var #comfunc global IFaxDocument_put_CoverPageType 26 int #comfunc global IFaxDocument_get_ScheduleType 27 var #comfunc global IFaxDocument_put_ScheduleType 28 int #comfunc global IFaxDocument_get_ReceiptType 29 var #comfunc global IFaxDocument_put_ReceiptType 30 int #comfunc global IFaxDocument_get_GroupBroadcastReceipts 31 var #comfunc global IFaxDocument_put_GroupBroadcastReceipts 32 int #comfunc global IFaxDocument_get_Priority 33 var #comfunc global IFaxDocument_put_Priority 34 int #comfunc global IFaxDocument_get_TapiConnection 35 sptr #comfunc global IFaxDocument_putref_TapiConnection 36 sptr #comfunc global IFaxDocument_Submit 37 wstr,var #comfunc global IFaxDocument_ConnectedSubmit 38 sptr,var #comfunc global IFaxDocument_get_AttachFaxToReceipt 39 var #comfunc global IFaxDocument_put_AttachFaxToReceipt 40 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFaxDocument "{B207A246-09E3-4A4E-A7DC-FEA31D29458F}" #usecom global IFaxDocument IID_IFaxDocument "{0F3F9F91-C838-415E-A4F3-3E828CA445E0}" #comfunc global IFaxDocument_get_Body 7 sptr #comfunc global IFaxDocument_put_Body 8 wstr #comfunc global IFaxDocument_get_Sender 9 sptr #comfunc global IFaxDocument_get_Recipients 10 sptr #comfunc global IFaxDocument_get_CoverPage 11 sptr #comfunc global IFaxDocument_put_CoverPage 12 wstr #comfunc global IFaxDocument_get_Subject 13 sptr #comfunc global IFaxDocument_put_Subject 14 wstr #comfunc global IFaxDocument_get_Note 15 sptr #comfunc global IFaxDocument_put_Note 16 wstr #comfunc global IFaxDocument_get_ScheduleTime 17 sptr #comfunc global IFaxDocument_put_ScheduleTime 18 double #comfunc global IFaxDocument_get_ReceiptAddress 19 sptr #comfunc global IFaxDocument_put_ReceiptAddress 20 wstr #comfunc global IFaxDocument_get_DocumentName 21 sptr #comfunc global IFaxDocument_put_DocumentName 22 wstr #comfunc global IFaxDocument_get_CallHandle 23 sptr #comfunc global IFaxDocument_put_CallHandle 24 int #comfunc global IFaxDocument_get_CoverPageType 25 sptr #comfunc global IFaxDocument_put_CoverPageType 26 int #comfunc global IFaxDocument_get_ScheduleType 27 sptr #comfunc global IFaxDocument_put_ScheduleType 28 int #comfunc global IFaxDocument_get_ReceiptType 29 sptr #comfunc global IFaxDocument_put_ReceiptType 30 int #comfunc global IFaxDocument_get_GroupBroadcastReceipts 31 sptr #comfunc global IFaxDocument_put_GroupBroadcastReceipts 32 int #comfunc global IFaxDocument_get_Priority 33 sptr #comfunc global IFaxDocument_put_Priority 34 int #comfunc global IFaxDocument_get_TapiConnection 35 sptr #comfunc global IFaxDocument_putref_TapiConnection 36 sptr #comfunc global IFaxDocument_Submit 37 wstr,sptr #comfunc global IFaxDocument_ConnectedSubmit 38 sptr,sptr #comfunc global IFaxDocument_get_AttachFaxToReceipt 39 sptr #comfunc global IFaxDocument_put_AttachFaxToReceipt 40 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。