IShellFolder::SetNameOf メソッド (shobjidl_core.h)

ファイル オブジェクトまたはサブフォルダーの表示名を設定し、プロセス内の項目識別子を変更します。

構文

HRESULT SetNameOf(
  [in]  HWND            hwnd,
  [in]  PCUITEMID_CHILD pidl,
  [in]  LPCWSTR         pszName,
  [in]  SHGDNF          uFlags,
  [out] PITEMID_CHILD   *ppidlOut
);

パラメーター

[in] hwnd

型: HWND

クライアントが表示するダイアログ ボックスまたはメッセージ ボックスの所有者ウィンドウへのハンドル。

[in] pidl

種類: PCUITEMID_CHILD

親フォルダーを基準にしてファイル オブジェクトまたはサブフォルダーを一意に識別する ITEMIDLIST 構造体へのポインター。 構造体には、1 つの SHITEMID 構造体の後に終端の 0 が続く必要があります。

[in] pszName

種類: LPCWSTR

新しい表示名を指定する null で終わる文字列へのポインター。

[in] uFlags

種類: SHGDNF

pszName パラメーターで指定された名前の種類を示すフラグ。 使用可能な値と値の組み合わせの一覧については、「 SHGDNF」を参照してください。

[out] ppidlOut

種類: PITEMID_CHILD*

省略可能。 指定した場合、名前が変更された項目の ITEMIDLIST を受け取る ITEMIDLIST 構造体へのポインターのアドレス。 呼び出し元は、null 以外の ppidlOut を渡すことによってこの値を要求します。 IShellFolder::SetNameOf の実装では、ppidlOut パラメーターの新しい ITEMIDLIST へのポインターを返す必要があります。

戻り値

型: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

ファイル システム オブジェクトまたはその中のフォルダーの表示名を変更すると、ファイルまたはディレクトリの名前が変更されます。

このメソッドを呼び出す前に、アプリケーションで IShellFolder::GetAttributesOf を呼び出し、SFGAO_CANRENAME フラグが設定されていることをチェックする必要があります。 このフラグは、基本的に名前空間クライアントのヒントであることに注意してください。 IShellFolder::SetNameOf が成功または失敗するとは限りません。

IShellFolder::SetNameOf の実装者は、オブジェクトの名前変更が完了したら、古い PID と新しい絶対 PID の両方で SHChangeNotify を呼び出す必要があります。 次の例は、フォルダー オブジェクトの名前変更に続く SHChangeNotify の呼び出しを示しています。

SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_IDLIST, pidlFullOld, pidlFullNew);

この呼び出しにより、古い名前と新しい名前の両方がビューに表示されなくなります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)
[DLL] Shell32.dll (バージョン 4.0 以降)