ホストされたシェル拡張やその他のコンポーネントが、それらのホストプロセスの早期終了を防ぐためのインターフェイスを取得する。
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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の shell32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_shell32_gen2.hs |