SHGetPropertyStoreForWindow

特定のウィンドウのプロパティのコレクションを表すオブジェクトを取得し、それらのプロパティをクエリしたり設定したりできるようにする。

SHGetPropertyStoreForWindow hwnd, riid, ppv

hwnd : [intptr] 型: HWND プロパティを取得するウィンドウへのハンドル。
riid : [var] 型: REFIID ppv 経由で取得するプロパティストアオブジェクトの IID への参照。これは通常 IID_IPropertyStore である。
ppv : [var] 型: void** この関数が返るときに、riid で要求されたインターフェイスポインターを格納する。これは通常 IPropertyStore である。

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

解説

特定のウィンドウのプロパティのコレクションを表すオブジェクトを取得し、それらのプロパティをクエリしたり設定したりできるようにする。

[戻り値]
型: HRESULT この関数が成功した場合は S_OK を返す。失敗した場合は HRESULT エラーコードを返す。

[備考]
アプリケーションは、System.AppUserModel.ID プロパティに明示的な Application User Model ID
(AppUserModelID)
を設定するために、この関数を使用してウィンドウのプロパティストアにアクセスできる。ウィンドウのプロパティはウィンドウを閉じる前に削除する必要がある。これを行わないと、それらのプロパティが使用しているリソースがシステムに返却されない。プロパティを削除するには
PROPVARIANT 型の VT_EMPTY に設定する。ppv 経由で取得したオブジェクトに対して
IPropertyStore::SetValue を呼び出すと、プロパティと値はただちにウィンドウに格納される。したがって
IPropertyStore::Commit
を呼び出す必要はない。呼び出してもエラーは発生しないが効果はない。アプリケーションは、アプリケーションのタスクバーグループ化やジャンプリストの内容を制御するために、個々のウィンドウに
AppUserModelID
を設定する。たとえばスイートアプリケーションは、サブ機能ごとに異なるタスクバーボタンを提供し、そのサブ機能に関連するウィンドウをそのボタンの下にグループ化したい場合がある。ウィンドウレベルの
AppUserModelID
がない場合、それらのウィンドウはすべてメインプロセスの下にグループ化される。アプリケーションは、システムがアプリケーションをその状態に戻せるようにするためにも、このプロパティストアを使用してこれらの再起動プロパティを設定すべきである。
(以下省略)

情報

プラグイン / モジュール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