SHGetInstanceExplorer

ホストされたシェル拡張やその他のコンポーネントが、それらのホストプロセスの早期終了を防ぐためのインターフェイスを取得する。

SHGetInstanceExplorer ppunk

ppunk : [var] 型: IUnknown** この関数が成功した場合、ホストプロセスの IUnknown インターフェイスポインターのアドレスを格納する。これはホストプロセスの終了を防ぐために使用されるフリースレッドインターフェイスである。関数呼び出しが失敗した場合、この値は NULL に設定される。

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

解説

ホストされたシェル拡張やその他のコンポーネントが、それらのホストプロセスの早期終了を防ぐためのインターフェイスを取得する。

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

[備考]
シェル拡張ハンドラーなど、DLL として実装され Windows Explorer (Explorer.exe) や Internet
Explorer (Iexplore.exe)
などのホストプロセス内で実行されるコンポーネントが多数存在する。通常、ユーザーがホストプロセスを閉じると、コンポーネントもただちにシャットダウンされる。このような突然の終了は、いくつかのコンポーネントにとって問題を引き起こす可能性がある。たとえば、コンポーネントがバックグラウンドスレッドを使用してデータをダウンロードしたりユーザーインターフェイス機能を実行したりしている場合、安全にシャットダウンするための追加時間が必要となる場合がある。SHGetInstanceExplorer
により、ホストプロセス内で実行されているコンポーネントがホストプロセスへの参照を保持できるようになる。SHGetInstanceExplorer
はホストの参照カウントをインクリメントし、ホストの IUnknown
インターフェイスへのポインターを返す。その参照を保持することで、コンポーネントはホストプロセスが早期に終了するのを防げる。コンポーネントが必要な処理を完了した後は、(*ppunk)->Release
を呼び出してホストの参照を解放し、プロセスが終了できるようにする必要がある。注 SHGetInstanceExplorer
が成功した場合、コンポーネントは不要になった時点でホストの参照を解放しなければならない。そうしなければ、プロセスに関連付けられたすべてのリソースがメモリに残ったままになる。*ppunk
が指す IUnknown インターフェイスは、この参照を解放するためにのみ使用できる。コンポーネントは
(*ppunk)->QueryInterface
を使用して他のインターフェイスポインターを要求することはできない。SHGetInstanceExplorer は、以前に
SHSetInstanceExplorer を呼び出してプロセス参照を設定したアプリケーションから呼び出された場合にのみ成功する。

情報

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