SHGetFolderPathAndSubDirW

フォルダのパスを取得し、ユーザー指定のサブフォルダパスを追加する。(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
URLhttps://github.com/inovia/IronHSP
備考Win32 API の shell32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_shell32_gen2.hs