IE用プラグインからLunascapeAPIを利用する方法

はじめに


本文書はC++によるIEツールバー(もしくはサイドバー)の作成経験がある方を対象とします。 IEツールバーを作成する方法については「Internet Explorerツールバー拡張プラグインの作り方」をお読み下さい。

Lunascape上で動作するIEプラグインは、SetSite(IObjectWithSite)を呼び出される際に、以下の手順を用いることでLunascapeAPIの機能を利用することができます。

LunascapeAPIを利用するための準備


タイプライブラリファイルの取得

タイプライブラリ(LunascapeAPI.tlb)をダウンロードし、IEツールバーのソースコードから参照(#import)できるフォルダに設置します。

C++ソースファイルの変更手順

LunascapeAPIを利用するC++ソースファイル(.cpp)の先頭に次の行を追加します。

#import "LunascapeAPI.tlb"

例:

#include "StdAfx.h"
#include <string>

#import "LunascapeAPI.tlb" // <- LunascapeAPIを利用するために必要

LunascapeAPIの利用方法

IEツールバーに対し、SetSiteされたIUnknownポインタからLunascapeAPIへのインターフェイスを取得します。以下がサンプルコードとなります。本サンプルではLunascapeAPIの「MessageBox」という関数を利用しています。利用可能な他の関数など、LunascapeAPIの詳細についてはAPIリファレンスのLunascape APIの項目をご参照下さい。

TDMETHODIMP MySampleToolBar::SetSite(IN IUnknown* pUnkSite)
{
HRESULT hr = __super::SetSite(pUnkSite);

if ( SUCCEEDED(hr) )
{
using namespace Lunascape2;
ILunascapeAPIPtr spLunascapeAPI = pUnkSite;
if ( spLunascapeAPI != NULL )
{
_bstr_t bstrMessage("Hello! World");
spLunascapeAPI->MessageBox(bstrMessage);
}
}

return hr;
}

/* LunascapeがIEプラグインをロードする過程において呼び出す
IObjectWithSiteインタフェースのSetSiteメソッドを例として挙げています。
SetSiteメソッドに渡されたpUnkSite引数からILunascapeAPIインタフェースを
取得して、取得に成功すればMessageBoxメソッドを呼び出しています。*/