フォルダのパスを取得し、ユーザー指定のサブフォルダパスを追加する。(Unicode)
SHGetFolderPathAndSubDirW hwnd, csidl, hToken, dwFlags, pszSubDir, pszPath
hwnd : [intptr] 型: HWND 予約済み。 csidl : [int] 型: int パスを取得するフォルダを識別する CSIDL 値。実フォルダのみが有効である。仮想フォルダを指定するとこの関数は失敗する。フォルダの CSIDL を CSIDL_FLAG_CREATE と組み合わせると、SHGetFolderPathAndSubDir でフォルダの作成を強制できる。 hToken : [intptr] 型: HANDLE 特定のユーザーを表すアクセストークン。Windows 2000 より前のシステムではこの値を NULL に設定する。それ以降のシステムでは、hToken は通常 (常にではない) NULL に設定する。複数ユーザーを持ち得るが単一ユーザーに属するものとして扱われるフォルダの場合に hToken に値を割り当てる必要があるかもしれない。この種類の最も一般的に使用されるフォルダはマイ ドキュメントである。 dwFlags : [int] 型: DWORD 返されるパスがフォルダの実際のパスか既定のパスかを指定する。この値は、CSIDL 値に関連付けられたフォルダがユーザーによって移動または名前変更される可能性がある場合に使用する。 pszSubDir : [wstr] 型: LPCTSTR フォルダのパスに追加するサブパスへのポインター。これは長さ MAX_PATH の null 終端文字列である。新しいディレクトリを作成しない場合、これは既存のサブディレクトリでなければならず、そうでない場合は関数がエラーを返す。サブパスを追加しない場合、この値は NULL でもよい。 pszPath : [wstr] 型: LPTSTR この関数が返るときに、ディレクトリパスと追加されたサブパスを指す。これは長さ MAX_PATH の null 終端文字列である。関数がエラーコードを返した場合、この文字列は空である。
(プラグイン / モジュール : shell32.dll)
フォルダのパスを取得し、ユーザー指定のサブフォルダパスを追加する。(Unicode) [戻り値] 型: HRESULT この関数が成功した場合は S_OK を返す。失敗した場合は HRESULT エラーコードを返す。 [備考] > [!NOTE] > shlobj_core.h ヘッダーは SHGetFolderPathAndSubDir を、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして定義している。エンコーディング中立なエイリアスとそうでないコードを混在して使用すると、コンパイルや実行時のエラーにつながる不一致が発生する場合がある。詳細は [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes) を参照。
| プラグイン / モジュール | shell32.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の shell32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_shell32_gen2.hs |