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

INewObjectHandler

エクスプローラー上でファイルを新規作成する際に利用されます。

確認済み OS

Windows 7

構文

[C/C++]

DECLARE_INTERFACE_IID_(INewObjectHandler, IUnknown, "01B8912E-05CD-4EB2-8B4B-9112E8C2A8BE")
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid LPVOID FAR* ppvObject) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /*** INewObjectHandler method ***/
    STDMETHOD(ObjectSavedAndClosed)(THIS_ HWND hWndOwner, LPVOID lpReserved, PCIDLIST_ABSOLUTE pidlPath) PURE;
};

EXTERN_C const IID IID_INewObjectHandler =
{ 0x01B8912E, 0x05CD, 0x4EB2, 0x8B, 0x4B, 0x91, 0x12, 0xE8, 0xC2, 0xA8, 0xBE };

メソッド

ObjectSavedAndClosed

ファイルが作成された後に呼び出されます。

hWndOwner ファイルを作成したフォルダーの親ウィンドウハンドルを指定します。メッセージボックスなどを表示する際に利用されます。
lpReserved (不明、NULLが指定できます。現時点ではほとんど利用されておらず、数値かポインターかも分かっていません。)
pidlPath 作成された項目のITEMIDLIST(デスクトップからの絶対パス)を指定します。

戻り値

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

解説

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

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

クラス名 CLSID
Briefcase {85BBD920-42A0-1069-A2E4-08002B30309D}
New Library Menu Handler {C7CA6167-2F46-4C4C-98B2-C92591368971}
New Shortcut Wizard {CEEFEA1B-3E29-4EF1-B34C-FEC79C4F70AF}

最終更新日: 2012/01/23