IPhotoAcquireSettings
COM公式ドキュメント
IPhotoAcquireSettings インターフェイスは、ファイル名の書式など、画像取得の設定を扱うために使用します。
メソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
InitializeFromRegistry メソッドは、設定の初期化に使用するレジストリキーを指定します。
| pszRegistryKey | LPWSTR | in | レジストリキーを格納した、null で終わる文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| このメソッドはまだ実装されていません。 |
解説(Remarks)
現時点では、レジストリの構造はまだ確定していません。
SetFlags メソッドは、写真取得フラグを設定します。
| dwPhotoAcquireFlags | DWORD | in | 写真取得フラグを格納したダブルワード値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
SetOutputFilenameTemplate メソッドは、ファイル名の書式を指定する書式文字列(テンプレート)を指定します。
| pszTemplate | LPWSTR | in | 書式文字列を格納した、null で終わる文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
書式文字列は、パスのリテラルとトークンが混在したものです。書式文字列は次のようになります。
$(MyPicturesFolder)\$(DateAcquired), $(EventName)\$(EventName) $(SequenceNumber).$(OriginalExtension)
トークンの書式は次のようになります。ここで OptionalPrefix と OptionSuffix は、TokenIdentifier の置換結果が長さ 0 の文字列になる場合は抑制されます。
$([OptionalPrefix]TokenIdentifier:SubToken[OptionalSuffix]|AlternateString)
キャレット("^")はエスケープ文字であるため、"^$" は最終的なパスでは "$" になります。
かっこ(丸かっこ・角かっこ)はトークン内ではリテラルとして使用できませんが、トークンの外では使用できます。つまり、キャレット("^")でエスケープしない限り、OptionalString サブトークン内で "["、"]"、"("、")" を使用することはできません。
トークンにはいくつかの種類があり、次のようなものがあります。
次のような SHGetSpecialFolder 変数。これらは最初のトークンでなければならず、多くても 1 回しか使用できません。
MyPicturesFolderMyDocumentsFolder
SequenceNumber(シーケンス番号はファイル名の衝突を回避するために使用されます。存在する場合は、パスのうちファイル名部分に含まれている必要があります。)DateAcquiredEventNameUserNameMachineName
DateTakenOriginalFilenameOriginalExtensionCameraModelWidthHeight
$(DateTaken) は、ロケールや言語の設定にかかわらず、すべてのバージョンの Microsoft Windows で同じです。
例として、EventName が "Meghan's Birthday" で、命名パターンが次のようであるとします。
$(MyPicturesFolder)\$(DateAcquired)$([, ]EventName)\$(EventName[ ])$(SequenceNumber).$(OriginalExtension)
結果として、ファイルは次のように命名されます。
C:\Documents and Settings\shauniv\My Documents\My Pictures\2003-11-14, Meghan's Birthday\Meghan's Birthday 001.jpg
C:\Documents and Settings\shauniv\My Documents\My Pictures\2003-11-14, Meghan's Birthday\Meghan's Birthday 002.jpg
C:\Documents and Settings\shauniv\My Documents\My Pictures\2003-11-14, Meghan's Birthday\Meghan's Birthday 003.jpg
C:\Documents and Settings\shauniv\My Documents\My Pictures\2003-11-14, Meghan's Birthday\Meghan's Birthday 004.jpg
SetSequencePaddingWidth メソッドは、ファイル名内の連番フィールドの幅を示す値を設定します。
| dwWidth | DWORD | in | 連番フィールドの幅を格納したダブルワード値。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
SetSequencePaddingWidth に渡した値が 0 以外で、かつ SetOutputFileNameTemplate で指定した書式文字列に連番トークンが含まれている場合、このメソッドは連番トークンに割り当てる幅を設定します。たとえば、テンプレート $(GroupTag)$(AcquisitionSequence).$(OriginalExtension) の場合、パディングを 0 に設定するとファイル名は次のようになります。
"Image1.jpg"
パディングを 3 に設定すると、ファイル名は次のようになります。
"Image 1.jpg"
SetSequenceZeroPadding メソッドは、連番ファイル名のパディングにゼロを使うかスペースを使うかを示す値を設定します。
| fZeroPad | BOOL | in | TRUE に設定した場合、連番ファイル名をゼロでパディングすることを示すフラグ。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
ゼロでパディングされたファイル名は次のようになります。
"IMG0001.JPG"
ゼロパディングを行わない同じファイル名は次のようになります。
"IMG 1.JPG"
SetGroupTag メソッドは、取得セッションのグループタグを設定します。
| pszGroupTag | LPWSTR | in | グループタグを格納した、null で終わる文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
グループタグは各ファイルのメタデータにキーワードとして格納されます。また、SetOutputFileNameTemplate に渡す書式文字列に $(GroupTag) トークンが含まれている場合は、ファイル名にも使用されます。
SetAcquisitionTime メソッドは、取得時刻を明示的に設定します。
| pftAcquisitionTime | FILETIME* | in | 取得時刻を指定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは通常、2 つのセッションで同じ取得時刻を表示させるために使用します。明示的に設定しない場合、取得時刻は既定で現在のマシン時刻になります。
GetFlags メソッドは、写真取得フラグを取得します。
| pdwPhotoAcquireFlags | DWORD* | out | 写真取得フラグを格納したダブルワード値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外の値が必要でした。 |
GetOutputFilenameTemplate メソッドは、ファイル名の書式を指定する書式文字列(テンプレート)を取得します。
| pbstrTemplate | LPWSTR* | out | 書式文字列を格納する文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
書式文字列は、パスのリテラルとトークンが混在したものです。書式文字列は次のようになります。
$(MyPicturesFolder)\$(DateAcquired), $(EventName)\$(EventName) $(SequenceNumber).$(OriginalExtension)
GetSequencePaddingWidth メソッドは、ファイル名内の連番フィールドの幅を示す値を取得します。
| pdwWidth | DWORD* | out | 連番フィールドの幅を格納するダブルワード値へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外の値が必要でした。 |
解説(Remarks)
SetOutputFileNameTemplate で指定した書式文字列に連番トークンが含まれている場合、このメソッドは連番トークンに割り当てられた幅を取得します。
書式文字列に連番トークンが含まれていない場合、このメソッドが返す値は未定義です。
GetSequenceZeroPadding メソッドは、連番ファイル名のパディングにゼロを使うかスペースを使うかを示す値を取得します。
| pfZeroPad | BOOL* | out | TRUE に設定されている場合、連番ファイル名がゼロでパディングされることを示すフラグへのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
ゼロでパディングされたファイル名は次のようになります。
"IMG0001.JPG"
ゼロパディングを行わない同じファイル名は次のようになります。
"IMG 1.JPG"
GetGroupTag メソッドは、デバイスからダウンロードされるファイルグループのタグ文字列を取得します。
| pbstrGroupTag | LPWSTR* | out | グループタグを格納する文字列へのポインター。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
グループタグは各ファイルのメタデータにキーワードとして格納されます。また、SetOutputFileNameTemplate に渡す書式文字列に $(GroupTag) トークンが含まれている場合は、ファイル名にも使用されます。
GetAcquisitionTime メソッドは、現在のセッションの取得時刻を取得します。
| pftAcquisitionTime | FILETIME* | out | 取得時刻を指定します。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| NULL 以外の値が必要でした。 |
解説(Remarks)
明示的に設定しない場合、取得時刻は既定で現在のマシン時刻になります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPhotoAcquireSettings "{00F2B868-DD67-487C-9553-049240767E91}" #usecom global IPhotoAcquireSettings IID_IPhotoAcquireSettings "{}" #comfunc global IPhotoAcquireSettings_InitializeFromRegistry 3 wstr #comfunc global IPhotoAcquireSettings_SetFlags 4 int #comfunc global IPhotoAcquireSettings_SetOutputFilenameTemplate 5 wstr #comfunc global IPhotoAcquireSettings_SetSequencePaddingWidth 6 int #comfunc global IPhotoAcquireSettings_SetSequenceZeroPadding 7 int #comfunc global IPhotoAcquireSettings_SetGroupTag 8 wstr #comfunc global IPhotoAcquireSettings_SetAcquisitionTime 9 var #comfunc global IPhotoAcquireSettings_GetFlags 10 var #comfunc global IPhotoAcquireSettings_GetOutputFilenameTemplate 11 var #comfunc global IPhotoAcquireSettings_GetSequencePaddingWidth 12 var #comfunc global IPhotoAcquireSettings_GetSequenceZeroPadding 13 var #comfunc global IPhotoAcquireSettings_GetGroupTag 14 var #comfunc global IPhotoAcquireSettings_GetAcquisitionTime 15 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IPhotoAcquireSettings "{00F2B868-DD67-487C-9553-049240767E91}" #usecom global IPhotoAcquireSettings IID_IPhotoAcquireSettings "{}" #comfunc global IPhotoAcquireSettings_InitializeFromRegistry 3 wstr #comfunc global IPhotoAcquireSettings_SetFlags 4 int #comfunc global IPhotoAcquireSettings_SetOutputFilenameTemplate 5 wstr #comfunc global IPhotoAcquireSettings_SetSequencePaddingWidth 6 int #comfunc global IPhotoAcquireSettings_SetSequenceZeroPadding 7 int #comfunc global IPhotoAcquireSettings_SetGroupTag 8 wstr #comfunc global IPhotoAcquireSettings_SetAcquisitionTime 9 sptr #comfunc global IPhotoAcquireSettings_GetFlags 10 sptr #comfunc global IPhotoAcquireSettings_GetOutputFilenameTemplate 11 sptr #comfunc global IPhotoAcquireSettings_GetSequencePaddingWidth 12 sptr #comfunc global IPhotoAcquireSettings_GetSequenceZeroPadding 13 sptr #comfunc global IPhotoAcquireSettings_GetGroupTag 14 sptr #comfunc global IPhotoAcquireSettings_GetAcquisitionTime 15 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。