IShellLibrary
COM公式ドキュメント
ライブラリを作成および管理するためのメソッドを公開します。
解説(Remarks)
実装するタイミング
IShellLibrary の独自実装はサポートされていません。クライアント アプリケーションは Shell32.dll が提供する実装を使用します。使用するタイミング
新しいライブラリの作成、または既存のライブラリの属性の照会や更新を行うには IShellLibrary を使用します。ライブラリ ヘルパー関数
次のライブラリ ヘルパー関数が Shobjidl.h によって提供されます。| 名前 | 概要 |
|---|---|
| SHAddFolderPathToLibrary | ライブラリにフォルダーを追加します。 |
| SHCreateLibrary | IShellLibrary オブジェクトを作成します。 |
| SHLoadLibraryFromItem | 指定したライブラリ定義ファイルから IShellLibrary オブジェクトを作成して読み込みます。 |
| SHLoadLibraryFromKnownFolder | 指定した KNOWNFOLDERID に対する IShellLibrary オブジェクトを作成して読み込みます。 |
| SHLoadLibraryFromParsingName | 指定したパスに対する IShellLibrary オブジェクトを作成して読み込みます。 |
| SHRemoveFolderPathFromLibrary | ライブラリからフォルダーを削除します。 |
| SHResolveFolderPathInLibrary | 移動または名前変更されたライブラリ フォルダーの対象の場所を解決しようとします。 |
| SHResolveLibrary | ライブラリの場所を見つけようとします。 |
| SHSaveLibraryInFolderPath | IShellLibrary オブジェクトをディスクに保存します。 |
| SHShowManageLibraryUI | ライブラリ フォルダーと既定の保存場所をユーザーが管理できるライブラリ管理ダイアログを表示します。 |
ライブラリの列挙型
次の列挙型がライブラリをサポートします。| 名前 | 概要 |
|---|---|
| DEFAULTSAVEFOLDERTYPE | 既定の保存場所がパブリックかプライベートかを指定します。 |
| LIBRARYOPTIONFLAGS | ライブラリ オプションを指定します。 |
| LIBRARYSAVEFLAGS | ライブラリの保存時に名前の衝突を処理するためのオプションを定義します。 |
メソッド 17
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したライブラリ定義ファイルからライブラリを読み込みます。
| psiLibrary | IShellItem* | in | 読み込むライブラリ定義ファイルの IShellItem オブジェクト。このオブジェクトがライブラリでない場合はエラーが返されます。 |
| grfMode | DWORD | in | ライブラリ オブジェクトのアクセス モードと共有モードを指定する、1 つ以上の STGM ストレージ メディア フラグ。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
既に読み込まれている IShellLibrary オブジェクトに対してこのメソッドを呼び出すと、そのオブジェクトの内容はメモリ内で新しい情報によって上書きされます。
既存のライブラリ オブジェクトがない場合は、このメソッドの代わりに SHLoadLibraryFromItem を呼び出すことができます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHLoadLibraryFromItem を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHLoadLibraryFromItem(
__in IShellItem *psiLibrary,
__in DWORD grfMode,
__in REFIID riid,
__deref_out void **ppv
)
{
*ppv = NULL;
IShellLibrary *plib;
HRESULT hr = CoCreateInstance(
CLSID_ShellLibrary,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&plib));
if (SUCCEEDED(hr))
{
hr = plib->LoadLibraryFromItem (psiLibrary, grfMode);
if (SUCCEEDED(hr))
{
hr = plib->QueryInterface (riid, ppv);
}
plib->Release();
}
return hr;
}
次のコード例は、このメソッドをラップするヘルパー関数 SHLoadLibraryFromParsingName を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHLoadLibraryFromParsingName(
__in PCWSTR pszParsingName,
__in DWORD grfMode,
__in REFIID riid,
__deref_out void **ppv
)
{
*ppv = NULL;
IShellItem *psiLibrary;
HRESULT hr = SHCreateItemFromParsingName (
pszParsingName,
NULL,
IID_PPV_ARGS(&psiLibrary));
if (SUCCEEDED(hr))
{
hr = SHLoadLibraryFromItem (psiLibrary, grfMode, riid, ppv);
psiLibrary->Release();
}
return hr;
}
KNOWNFOLDERID によって参照されるライブラリを読み込みます。
| kfidLibrary | GUID* | in | 読み込むライブラリを識別する KNOWNFOLDERID 値。 |
| grfMode | DWORD | in | ライブラリ オブジェクトのアクセス モードと共有モードを指定する、1 つ以上の STGM ストレージ メディア フラグ。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドを呼び出したときに IShellLibrary オブジェクトが既にライブラリを保持している場合、そのライブラリはメモリ内で新しいライブラリによって上書きされます。
このライブラリに対する既存の IShellLibrary オブジェクトがない場合は、このメソッドの代わりに SHLoadLibraryFromItem を呼び出すことができます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHLoadLibraryFromKnownFolder を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHLoadLibraryFromKnownFolder(
__in REFKNOWNFOLDERID kfidLibrary,
__in DWORD grfMode,
__in REFIID riid,
__deref_out void **ppv)
{
*ppv = NULL;
IShellLibrary *plib;
HRESULT hr = CoCreateInstance(
CLSID_ShellLibrary,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&plib));
if (SUCCEEDED(hr))
{
hr = plib->LoadLibraryFromKnownFolder(kfidLibrary, grfMode);
if (SUCCEEDED(hr))
{
hr = plib->QueryInterface(riid, ppv);
}
plib->Release();
}
return hr;}
ライブラリにフォルダーを追加します。
| psiLocation | IShellItem* | in | ライブラリに追加するフォルダーを表す IShellItem オブジェクト。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
フォルダーがライブラリに追加されると、そのフォルダーは Windows Search インデックスにも追加されます。
利便性のため、このメソッドの代わりに SHAddFolderPathToLibrary を使用できます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHAddFolderPathToLibrary を示しています。
//
// From Shobjidl.h
//
__inline HRESULT SHAddFolderPathToLibrary (
__in IShellLibrary *plib,
__in PCWSTR pszFolderPath
)
{
IShellItem *psiFolder;
HRESULT hr = SHCreateItemFromParsingName (
pszFolderPath,
NULL,
IID_PPV_ARGS(&psiFolder));
if (SUCCEEDED(hr))
{
hr = plib->AddFolder (psiFolder);
psiFolder->Release ();
}
return hr;
}
ライブラリからフォルダーを削除します。
| psiLocation | IShellItem* | in | 削除するフォルダーを表す IShellItem オブジェクト。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
利便性のため、このメソッドの代わりに SHRemoveFolderPathFromLibrary を使用できます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHRemoveFolderPathFromLibrary を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHRemoveFolderPathFromLibrary(
__in IShellLibrary *plib,
__in PCWSTR pszFolderPath)
{
PIDLIST_ABSOLUTE pidlFolder =
SHSimpleIDListFromPath (pszFolderPath);
HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;
if (SUCCEEDED(hr))
{
IShellItem *psiFolder;
hr = SHCreateItemFromIDList (
pidlFolder,
IID_PPV_ARGS(&psiFolder));
if (SUCCEEDED(hr))
{
hr = plib->RemoveFolder(psiFolder);
psiFolder->Release();
}
CoTaskMemFree(pidlFolder);
}
return hr;
}
ライブラリに含まれる子フォルダーのセットを取得します。
| lff | LIBRARYFOLDERFILTER | in | 取得するフォルダーを決定する、次のいずれかの LIBRARYFOLDERFILTER 値。これらのフラグは組み合わせることができません。 LFF_FORCEFILESYSTEM (1)ファイル システム フォルダーのみを取得します。ファイル システム フォルダーとは、SFGAO_FILESYSTEM 属性が設定されているフォルダーです。 LFF_STORAGEITEMS (2)IStorage オブジェクトにバインドできるすべてのフォルダーを取得します。これらのフォルダーは、SFGAO_STORAGE または SFGAO_FILESYSTEM 属性が設定されているフォルダーです。 LFF_ALLITEMS (3)ライブラリ内のすべてのフォルダーを取得します。 |
| riid | GUID* | in | ppv で取得するインターフェイスの IID への参照。この値は通常 IID_IShellItemArray ですが、IID_IObjectCollection、IID_IObjectArray、または CShellItemArray によって実装されるその他のインターフェイスの IID を指定することもできます。 |
| ppv | void** | out | riid で要求したインターフェイスへのポインター。この呼び出しが失敗した場合、この値は NULL になります。 |
戻り値
型: HRESULT
このメソッドは次のいずれかの値を返します。
| 戻り値コード | 説明 |
|---|---|
| 呼び出しが成功し、指定したフォルダーが ppv に返されました。 | |
| 呼び出しは成功しましたが、指定したフォルダーの一部が ppv に返されませんでした。 | |
|
このメソッドはその他のエラー値を返す場合があります。 |
解説(Remarks)
このメソッドはフォルダーの順序付きリストを取得します。既定では、このメソッドはストレージの場所のみを返します。
最良の結果を得るには、riid パラメーターと ppv パラメーターに、Objbase.h で定義されている IID_PPV_ARGS マクロを使用してください。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディング エラーの可能性を排除できます。
フォルダーが移動または名前変更されている場合でも、ライブラリ フォルダーの対象の場所を解決します。
| psiFolderToResolve | IShellItem* | in | 見つけるライブラリ フォルダーを表す IShellItem オブジェクト。 |
| dwTimeout | DWORD | in | メソッドが返す前にフォルダーを見つけようとする最大時間 (ミリ秒単位)。指定した時間が経過するまでにフォルダーが見つからなかった場合は、エラーが返されます。 |
| riid | GUID* | in | 解決された対象の場所を表す、ppv で取得するインターフェイスの IID への参照。この値は通常 IID_IShellItem ですが、IID_IShellItem2、または CShellItem によって実装されるその他のインターフェイスの IID を指定することもできます。 |
| ppv | void** | out | riid で要求したインターフェイスへのポインター。 |
戻り値
型: HRESULT
このメソッドは次のいずれかの値を返します。
| 戻り値コード | 説明 |
|---|---|
| 対象フォルダーが見つかり、ppv に返されました。ただし、ライブラリが更新されているため、これらの変更を永続化するには IShellLibrary::Commit または IShellLibrary::Save を呼び出す必要があります。 | |
| 対象フォルダーが見つかり、ppv に返されました。 | |
|
このメソッドはその他のエラー値を返す場合があります。 |
解説(Remarks)
このメソッドはブロッキング呼び出しであり、返されるまで dwTimeout パラメーターで指定した時間だけ呼び出し元のスレッドをブロックする可能性があります。呼び出し元のスレッドをブロックするため、ユーザー インターフェイスの操作も処理するスレッドから呼び出さないでください。
このメソッドは、場所を解決できない場合でも、フォルダーを手動で見つけるようにユーザーに求めることはありません。
利便性のため、このメソッドの代わりに SHResolveFolderPathInLibrary を使用できます。
riid パラメーターと ppv パラメーターをまとめるには、Objbase.h で定義されている IID_PPV_ARGS マクロを使用することをお勧めします。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディング エラーの可能性を排除できます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHResolveFolderPathInLibrary を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHResolveFolderPathInLibrary(
__in IShellLibrary *plib,
__in PCWSTR pszFolderPath,
__in DWORD dwTimeout,
__deref_out PWSTR *ppszResolvedPath
)
{
*ppszResolvedPath = NULL;
PIDLIST_ABSOLUTE pidlFolder =
SHSimpleIDListFromPath(pszFolderPath);
HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;
if (SUCCEEDED(hr))
{
IShellItem *psiFolder;
hr = SHCreateItemFromIDList(
pidlFolder,
IID_PPV_ARGS(&psiFolder));
if (SUCCEEDED(hr))
{
IShellItem *psiResolved;
hr = plib->ResolveFolder(
psiFolder,
dwTimeout,
IID_PPV_ARGS(&psiResolved));
if (SUCCEEDED(hr))
{
hr = psiResolved->GetDisplayName(
SIGDN_DESKTOPABSOLUTEPARSING,
ppszResolvedPath);
psiResolved->Release();
}
psiFolder->Release();
}
CoTaskMemFree(pidlFolder);
}
return hr;
}
ライブラリが保存操作に使用する既定の対象フォルダーを取得します。
| dsft | DEFAULTSAVEFOLDERTYPE | in | 取得する保存フォルダーを指定する DEFAULTSAVEFOLDERTYPE 値。 |
| riid | GUID* | in | 保存場所を表す、ppv で取得するインターフェイスの IID への参照。この値は通常 IID_IShellItem ですが、IID_IShellItem2、または CShellItem によって実装されるその他のインターフェイスの IID を指定することもできます。 |
| ppv | void** | out | riid で要求したインターフェイスへのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
最良の結果を得るには、riid パラメーターと ppv パラメーターに、Objbase.h で定義されている IID_PPV_ARGS マクロを使用してください。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディング エラーの可能性を排除できます。
ライブラリが保存操作に使用する既定の対象フォルダーを設定します。
| dsft | DEFAULTSAVEFOLDERTYPE | in | 設定する既定の保存場所を指定する DEFAULTSAVEFOLDERTYPE 値。 |
| psi | IShellItem* | in | 既定の保存場所として使用するフォルダーを表す IShellItem オブジェクト。このオブジェクトが表すフォルダーは、既にライブラリ内にあるフォルダーである必要があります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
既定の保存場所は有効であり、読み取り/書き込みアクセス権を持ち、かつ SFGAO_STREAM または SFGAO_FILESYSTEM 属性のいずれかが設定されている必要があります。
psi がライブラリ内にない場合、このメソッドはエラーを返します。
ライブラリのオプションを取得します。
| plofOptions | LIBRARYOPTIONFLAGS* | out | このライブラリのライブラリ オプション。LIBRARYOPTIONFLAGS はビット単位の列挙子であり、複数のフラグを設定できることを意味します。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
ライブラリのオプションを設定します。
| lofMask | LIBRARYOPTIONFLAGS | in | この呼び出しで変更する LIBRARYOPTIONFLAGS 値を指定するビットマスク。 |
| lofOptions | LIBRARYOPTIONFLAGS | in | 変更する各 LIBRARYOPTIONFLAGS 値の新しい値を指定するビットマスク。lofMask で設定されていない LIBRARYOPTIONFLAGS 値は、この呼び出しでは変更されません。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
LIBRARYOPTIONFLAGS はビット単位の列挙子であり、複数のオプション フラグを設定できることを意味します。
オプション値を変更するには、変更するオプション値を lofMask に設定し、その上で lofOptions でオプションの値を設定またはクリアする必要があります。
例
次の例では、LOF_PINNEDTONAVPANE ライブラリ オプションをクリアします。
LIBRARYOPTIONFLAGS maskValue;
LIBRARYOPTIONFLAGS optionValue;
HRESULT hr = E_FAIL;
// set the maskValue variable to indicate
// which option value to change
maskValue = LOF_PINNEDTONAVPANE;
// set the optionValue variable to indicate
// the new value of the option
optionValue = ~LOF_PINNEDTONAVPANE;
// call the method
hr = library->SetOptions (maskValue, optionValue);
ライブラリのフォルダー タイプを取得します。
| pftid | GUID* | out | フォルダーに適用されるビュー テンプレート。通常はフォルダーの用途と内容に基づきます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
フォルダー タイプは、フォルダーが使用する既定のビュー テンプレートを決定します。ビュー テンプレートは、フォルダーの Windows エクスプローラー ビューに既定で表示される列と詳細を指定します。
FOLDERTYPEID 値は shlguid.h で定義されている GUID 値です。
ライブラリのフォルダー タイプを設定します。
| ftid | GUID* | in | フォルダーに適用されるビュー テンプレートを表す GUID または FOLDERTYPEID。通常はフォルダーの用途と内容に基づきます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
フォルダー タイプは、フォルダーが使用する既定のビュー テンプレートを決定します。ビュー テンプレートは、Windows エクスプローラーでフォルダーの既定ビューに既定で表示される列と詳細を指定します。FOLDERTYPEID 値は shlguid.h で定義されている GUID 値です。
ライブラリの既定のアイコンを取得します。
| ppszIcon | LPWSTR* | out | 既定のアイコンの場所を記述する null で終わる Unicode 文字列。この文字列は
|
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
ppszIcon で返される文字列の解析に関する追加情報については、PathParseIconLocation を参照してください。
ライブラリの既定のアイコンを設定します。
| pszIcon | LPWSTR | in | 既定のアイコンの場所を記述する null で終わる Unicode 文字列。この文字列は
|
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
pszIcon パラメーターの形式の詳細については、PathParseIconLocation を参照してください。
既存のライブラリ定義ファイルにライブラリの更新をコミットします。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
IShellLibrary::Commit は、既存のファイルにライブラリの更新を保存する場合にのみ呼び出せます。バッキング ファイルを持たないライブラリに対して IShellLibrary::Commit を呼び出すと失敗します。
新しいファイルを作成して保存するには、IShellLibrary::Save または SHSaveLibraryInFolderPath を呼び出します。
ライブラリが Libraries 既知フォルダー (FOLDERID_Libraries) に保存されると、ライブラリ内のフォルダーは自動的に検索インデックスに追加されます。
ライブラリを新しいライブラリ定義 (*.library-ms) ファイルに保存します。
| psiFolderToSaveIn | IShellItem* | in | ライブラリを保存するフォルダーを指定する IShellItem オブジェクト。ユーザーの既定のライブラリとともに FOLDERID_Libraries 既知フォルダーにライブラリを保存する場合は NULL を指定します。 |
| pszLibraryName | LPWSTR | in | ライブラリを保存する際のファイル名。ファイル名にはファイル名拡張子を含めないでください。ファイル名拡張子は自動的に追加されます。 |
| lsf | LIBRARYSAVEFLAGS | in | ライブラリ名の衝突を処理する方法を指定する LIBRARYSAVEFLAGS 値。 |
| ppsiSavedTo | IShellItem** | out | ライブラリの保存先となったライブラリ定義ファイルを表す IShellItem オブジェクト。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
IShellLibrary::Save と SHSaveLibraryInFolderPath は新しいライブラリ ファイルを作成し、そのファイルをディスクに保存します。既存のライブラリ ファイルを持つライブラリに加えた変更を保存するには、IShellLibrary::Commit を呼び出します。
ライブラリが Libraries 既知フォルダー (FOLDERID_Libraries) に保存されると、ライブラリの場所は自動的にシステム インデックスに追加されます。
利便性のため、このメソッドの代わりに SHSaveLibraryInFolderPath を使用できます。
例
次のコード例は、このメソッドをラップするヘルパー関数 SHSaveLibraryInFolderPath を示しています。
//
// from shobjidl.h
//
__inline HRESULT SHSaveLibraryInFolderPath(
__in IShellLibrary *plib,
__in PCWSTR pszFolderPath,
__in PCWSTR pszLibraryName,
__in LIBRARYSAVEFLAGS lsf,
__deref_opt_out PWSTR *ppszSavedToPath
)
{
if (ppszSavedToPath)
{
*ppszSavedToPath = NULL;
}
IShellItem *psiFolder;
HRESULT hr = SHCreateItemFromParsingName(
pszFolderPath,
NULL,
IID_PPV_ARGS(&psiFolder));
if (SUCCEEDED(hr))
{
IShellItem *psiSavedTo;
hr = plib->Save(psiFolder, pszLibraryName, lsf, &psiSavedTo);
if (SUCCEEDED(hr))
{
if (ppszSavedToPath)
{
hr = psiSavedTo->GetDisplayName(
SIGDN_DESKTOPABSOLUTEPARSING,
ppszSavedToPath);
}
psiSavedTo->Release();
}
psiFolder->Release();
}
return hr;
}
ライブラリを指定した既知フォルダー内の新しいファイルに保存します。
| kfidToSaveIn | GUID* | in | IShellLibrary オブジェクトを保存する既知フォルダーの ID。 詳細については、KNOWNFOLDERID を参照してください。 |
| pszLibraryName | LPWSTR | in | ライブラリを保存する際のファイル名。ファイル名にはファイル名拡張子を含めないでください。ファイル名拡張子は自動的に追加されます。 |
| lsf | LIBRARYSAVEFLAGS | in | ライブラリ名の衝突を処理する方法を指定する LIBRARYSAVEFLAGS 値。 |
| ppsiSavedTo | IShellItem** | out | ライブラリの保存先となったライブラリ定義ファイルを表す IShellItem オブジェクト。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
IShellLibrary::Save と SHSaveLibraryInFolderPath は新しいライブラリ ファイルを作成し、そのファイルをディスクに保存します。
既存のライブラリ ファイルを持つライブラリに加えた変更を保存するには、IShellLibrary::Commit を呼び出します。
ライブラリが Libraries 既知フォルダー (FOLDERID_Libraries) に保存されると、ライブラリの場所は自動的にシステム インデックスに追加されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IShellLibrary "{11A66EFA-382E-451A-9234-1E0E12EF3085}" #usecom global IShellLibrary IID_IShellLibrary "{D9B3211D-E57F-4426-AAEF-30A806ADD397}" #comfunc global IShellLibrary_LoadLibraryFromItem 3 sptr,int #comfunc global IShellLibrary_LoadLibraryFromKnownFolder 4 var,int #comfunc global IShellLibrary_AddFolder 5 sptr #comfunc global IShellLibrary_RemoveFolder 6 sptr #comfunc global IShellLibrary_GetFolders 7 int,var,sptr #comfunc global IShellLibrary_ResolveFolder 8 sptr,int,var,sptr #comfunc global IShellLibrary_GetDefaultSaveFolder 9 int,var,sptr #comfunc global IShellLibrary_SetDefaultSaveFolder 10 int,sptr #comfunc global IShellLibrary_GetOptions 11 var #comfunc global IShellLibrary_SetOptions 12 int,int #comfunc global IShellLibrary_GetFolderType 13 var #comfunc global IShellLibrary_SetFolderType 14 var #comfunc global IShellLibrary_GetIcon 15 var #comfunc global IShellLibrary_SetIcon 16 wstr #comfunc global IShellLibrary_Commit 17 #comfunc global IShellLibrary_Save 18 sptr,wstr,int,sptr #comfunc global IShellLibrary_SaveInKnownFolder 19 var,wstr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IShellLibrary "{11A66EFA-382E-451A-9234-1E0E12EF3085}" #usecom global IShellLibrary IID_IShellLibrary "{D9B3211D-E57F-4426-AAEF-30A806ADD397}" #comfunc global IShellLibrary_LoadLibraryFromItem 3 sptr,int #comfunc global IShellLibrary_LoadLibraryFromKnownFolder 4 sptr,int #comfunc global IShellLibrary_AddFolder 5 sptr #comfunc global IShellLibrary_RemoveFolder 6 sptr #comfunc global IShellLibrary_GetFolders 7 int,sptr,sptr #comfunc global IShellLibrary_ResolveFolder 8 sptr,int,sptr,sptr #comfunc global IShellLibrary_GetDefaultSaveFolder 9 int,sptr,sptr #comfunc global IShellLibrary_SetDefaultSaveFolder 10 int,sptr #comfunc global IShellLibrary_GetOptions 11 sptr #comfunc global IShellLibrary_SetOptions 12 int,int #comfunc global IShellLibrary_GetFolderType 13 sptr #comfunc global IShellLibrary_SetFolderType 14 sptr #comfunc global IShellLibrary_GetIcon 15 sptr #comfunc global IShellLibrary_SetIcon 16 wstr #comfunc global IShellLibrary_Commit 17 #comfunc global IShellLibrary_Save 18 sptr,wstr,int,sptr #comfunc global IShellLibrary_SaveInKnownFolder 19 sptr,wstr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。