IPhotoAcquire
COM公式ドキュメント
IPhotoAcquire インターフェイスは、デバイスから写真を取得するためのメソッドを提供します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
CreatePhotoSource メソッドは、IPhotoAcquire::Acquire に渡すための IPhotoAcquireSource オブジェクトを初期化します。
| pszDevice | LPWSTR | in | デバイス名を格納した、null で終わる文字列へのポインター。 |
| ppPhotoAcquireSource | IPhotoAcquireSource** | out | 写真の取得元となる、初期化された写真ソースを返します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外のポインターが必要でした。 |
解説(Remarks)
作成された IPhotoAcquireSource オブジェクトは、Acquire メソッドのパラメーターとして使用されます。
CreatePhotoSource でエラーが発生した場合、ppPhotoAcquireSource は NULL に初期化されます。
Acquire メソッドは、デバイスから写真を取得します。
| pPhotoAcquireSource | IPhotoAcquireSource* | inoptional | 写真の取得元となるデバイスを表す IPhotoAcquireSource オブジェクトへのポインター。このオブジェクトは CreatePhotoSource を呼び出して初期化します。 |
| fShowProgress | BOOL | in | TRUE に設定すると、進行状況ダイアログを表示することを示すフラグ。 |
| hWndParent | HWND | inoptional | 親ウィンドウのハンドル。 |
| pszApplicationName | LPWSTR | inoptional | アプリケーション名を格納した、null で終わる文字列へのポインター。 |
| pPhotoAcquireProgressCB | IPhotoAcquireProgressCB* | inoptional | 省略可能な IPhotoAcquireProgressCB オブジェクトへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外のポインターが必要でした。 |
解説(Remarks)
Acquire に渡す pPhotoAcquireSource パラメーターを初期化するには、Acquire を呼び出す前に CreatePhotoSource を呼び出す必要があります。
pPhotoAcquireProgressCB は、項目の取得中にさらにフィルタリングや制御を適用できるコールバックメソッドを提供します。
取得前にデバイスに項目が存在することを確認する、またはデバイスから項目を選択的に取得するには、Acquire を呼び出す前に IPhotoAcquireSource::InitializeItemList を呼び出して項目を列挙します。
EnumResults メソッドは、直近の Acquire 呼び出しで正常に転送されたすべてのファイルのパスを含む列挙を取得します。
| ppEnumFilePaths | IEnumString** | out | 転送されたすべてのファイルへのパスを含む列挙を返します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外のポインターが必要でした。 |
解説(Remarks)
ファイルが 1 つも転送されないうちにファイル転送が中止された場合、ppEnumFilePaths は NULL に設定されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPhotoAcquire "{00F23353-E31B-4955-A8AD-CA5EBF31E2CE}"
#usecom global IPhotoAcquire IID_IPhotoAcquire "{00F26E02-E9F2-4A9F-9FDD-5A962FB26A98}"
#comfunc global IPhotoAcquire_CreatePhotoSource 3 wstr,sptr
#comfunc global IPhotoAcquire_Acquire 4 sptr,int,sptr,wstr,sptr
#comfunc global IPhotoAcquire_EnumResults 5 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。