SHCreateDataObject

親フォルダ内にデータオブジェクトを生成する。

SHCreateDataObject pidlFolder, cidl, apidl, pdtInner, riid, ppv

pidlFolder : [var] 型: PCIDLIST_ABSOLUTE データオブジェクトを格納する親フォルダの ITEMIDLIST (PIDL) へのポインタ。
cidl : [int] 型: UINT apidl パラメータで指定されたファイルオブジェクトまたはサブフォルダの数。
apidl : [var] 型: PCUITEMID_CHILD_ARRAY 親フォルダを基準としてファイルオブジェクトまたはサブフォルダを一意に識別する定数 ITEMIDLIST 構造体へのポインタの配列。各アイテム識別子リストは終端ゼロが続く SHITEMID 構造体を 1 つだけ含まなければならない。
pdtInner : [var] 型: IDataObject* IDataObject インタフェースへのポインタ。このパラメータは NULL でも構わない。pdtInner は、生成するデータオブジェクトが、生成時に割り当てられる既定形式以外の追加 FORMATETC クリップボード形式をサポートする必要がある場合にのみ指定する。あるいは IDataObject::SetData を呼び出して FORMATETC 構造体に形式を指定することで、既定以外のクリップボード形式を使ってデータオブジェクトに値を設定するためのサポートも提供できる。
riid : [var] 型: REFIID ppv を通じて取得するインタフェースの IID への参照。これは IID_IDataObject でなければならない。
ppv : [var] 型: void** このメソッドが成功して戻る際に、riid で要求された IDataObject インタフェースポインタを格納する。

(プラグイン / モジュール : shell32.dll)

解説

親フォルダ内にデータオブジェクトを生成する。

[戻り値]
型: HRESULT 関数が成功した場合は S_OK を返す。そうでない場合は HRESULT エラーコードを返す。

[備考]
この関数は通常 IShellFolder::GetUIObjectOf メソッドの実装時に呼ばれる。インタフェース ID
IID_IDataObject のインタフェースポインタが要求されると(riid パラメータを使用)、実装者は応答として
SHCreateDataObject で生成したオブジェクト上のインタフェースポインタを返すことができる。この関数は
CFSTR_SHELLIDLIST(HIDA とも呼ばれる)クリップボード形式をサポートし、IDataObject::SetData
を介して任意のクリップボード形式に対する汎用サポートも提供する。クリップボード形式の詳細は「Shell Clipboard
Formats」を参照。新しいデータオブジェクトはドラッグ&ドロップなど、データが指定された形式でクリップボードに保存される操作で使用することを想定している。Objbase.h
で定義されている IID_PPV_ARGS マクロを使って riid と ppv のパラメータをまとめることが推奨される。このマクロは
ppv の値が指すインタフェースに基づいて正しい IID を提供するため、riid
のコーディングミスによる予期しない結果の可能性を排除できる。

情報

プラグイン / モジュールshell32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の shell32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_shell32_gen2.hs