Programming Field - ドキュメント無し関数 / 名前無し関数

IExplorerHost, IExplorerHost2

ファイルの関連付けでコマンドの代わりに実行されます。

確認済み OS

Windows 7

構文

[C/C++]

DECLARE_INTERFACE_IID_(IExplorerHost, IUnknown, "489E9453-869B-4BCC-A1C7-48B5285FD9D8")
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid LPVOID FAR* ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /*** IExplorerHost method ***/
    STDMETHOD(ShowWindow)(THIS_ PCIDLIST_ABSOLUTE pidlItem, int unknown,
        int xCurrent, int yCurrent, int nCmdShow) PURE;
};

DECLARE_INTERFACE_IID_(IExplorerHost2, IExplorerHost, "50A87BAA-5F79-4C31-B6B3-28F6F2D097E6")
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid LPVOID FAR* ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /*** IExplorerHost method ***/
    STDMETHOD(ShowWindow)(THIS_ PCIDLIST_ABSOLUTE pidlItem, int unknown,
        int xCurrent, int yCurrent, int nCmdShow) PURE;

    /*** IExplorerHost2 method ***/
    STDMETHOD(ShowWindowAtRect)(THIS_ PCIDLIST_ABSOLUTE pidlItem, int unknown,
        const RECT FAR* lprcRect, int nCmdShow) PURE;
};

EXTERN_C const IID IID_IExplorerHost =
{ 0x489E9453, 0x869B, 0x4BCC, 0xA1, 0xC7, 0x48, 0xB5, 0x28, 0x5F, 0xD9, 0xD8 };
EXTERN_C const IID IID_IExplorerHost2 =
{ 0x50A87BAA, 0x5F79, 0x4C31, 0xB6, 0xB3, 0x28, 0xF6, 0xF2, 0xD0, 0x97, 0xE6 };

[VB]

(準備中)

[VB.NET]

(準備中)

メソッド

ShowWindow

pidlItemに基づき新しくウィンドウを作成して表示します。

pidlItem 項目のITEMIDLIST(デスクトップからの絶対パス)を指定します。
unknown (不明、0が指定できます)
xCurrent, yCurrent 現在アクティブな位置の座標(マウスカーソルなど)をスクリーン座標で指定し、ウィンドウを表示させるためのモニター領域を決定するのに利用します。この値がそのままMonitorFromPoint関数に渡されます(MONITOR_DEFAULTTONEARESTを利用)。
nCmdShow ウィンドウを表示する際の表示パラメーター(SW_SHOWNORMALなど)を指定します。

ShowWindowAtRect

pidlItemに基づき新しくウィンドウを作成して表示します。ウィンドウはlprcRectの領域に合わせて表示されます。

pidlItem 項目のITEMIDLIST(デスクトップからの絶対パス)を指定します。
unknown (不明、0が指定できます)
lprcRect ウィンドウを表示させる領域を指定します。なお、この構造体のleftとtopの値はMonitorFromPoint関数にも渡されます(MONITOR_DEFAULTTONEARESTを利用)。
nCmdShow ウィンドウを表示する際の表示パラメーター(SW_SHOWNORMALなど)を指定します。

戻り値

いずれもHRESULTの値が返ります。成功した場合別スレッドで実際のアクションが実行される場合がほとんどであるため、その間メッセージループなどを回す必要があります(通常のアプリケーション用メッセージループで可)。また、その際インターフェイスはReleaseしても構いません。

解説

ファイル関連付けの「ExplorerHost」にこのインターフェイスを実装したクラスのCLSIDを指定するとこれらのインターフェイスを経由してメソッドが呼び出されます。

このインターフェイスを実装しているクラス例

クラス名 CLSID
CLSID_CommonExplorerHost {93A56381-E0CD-485A-B60E-67819E12F81B}
CLSID_SeparateSingleProcessExplorerHost {CEFF45EE-C862-41DE-AEE2-A022C81EDA92}
CLSID_SeparateMultipleProcessExplorerHost {75DFF2B7-6936-4C06-A8BB-676A7B00B24B}

最終更新日: 2012/01/23