|
// HelloWorldBHO.h : CHelloWorldBHO の宣言 |
|
|
|
#pragma once |
|
|
|
#include "resource.h" // メイン シンボル |
|
//#include <atlcomcli.h> |
|
//#include <OleIdl.h> |
|
|
|
|
|
#include "HelloWorld_i.h" |
|
#include <shlguid.h> // IID_IWebBrowser2、DIID_DWebBrowserEvents2 など |
|
#include <exdispid.h> // DISPID_DOCUMENTCOMPLETE など |
|
|
|
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA) |
|
#error "DCOM の完全サポートを含んでいない Windows Mobile プラットフォームのような Windows CE プラットフォームでは、単一スレッド COM オブジェクトは正しくサポートされていません。ATL が単一スレッド COM オブジェクトの作成をサポートすること、およびその単一スレッド COM オブジェクトの実装の使用を許可することを強制するには、_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA を定義してください。ご使用の rgs ファイルのスレッド モデルは 'Free' に設定されており、DCOM Windows CE 以外のプラットフォームでサポートされる唯一のスレッド モデルと設定されていました。" |
|
#endif |
|
|
|
using namespace ATL; |
|
|
|
|
|
// CHelloWorldBHO |
|
|
|
class ATL_NO_VTABLE CHelloWorldBHO : |
|
public CComObjectRootEx<CComSingleThreadModel>, |
|
public CComCoClass<CHelloWorldBHO, &CLSID_HelloWorldBHO>, |
|
public IObjectWithSiteImpl<CHelloWorldBHO>, |
|
public IDispatchImpl<IHelloWorldBHO, &IID_IHelloWorldBHO, &LIBID_HelloWorldLib, /*wMajor =*/ 1, /*wMinor =*/ 0> |
|
{ |
|
public: |
|
CHelloWorldBHO() |
|
{ |
|
} |
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_HELLOWORLDBHO) |
|
|
|
DECLARE_NOT_AGGREGATABLE(CHelloWorldBHO) |
|
|
|
BEGIN_COM_MAP(CHelloWorldBHO) |
|
COM_INTERFACE_ENTRY(IHelloWorldBHO) |
|
COM_INTERFACE_ENTRY(IDispatch) |
|
COM_INTERFACE_ENTRY(IObjectWithSite) |
|
END_COM_MAP() |
|
|
|
|
|
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT() |
|
|
|
HRESULT FinalConstruct() |
|
{ |
|
return S_OK; |
|
} |
|
|
|
void FinalRelease() |
|
{ |
|
} |
|
|
|
public: |
|
STDMETHOD(SetSite)(IUnknown *pUnkSite); |
|
|
|
|
|
private: |
|
CComPtr<IWebBrowser2> m_spWebBrowser; |
|
CComQIPtr<IOleClientSite> pOleClientSite; |
|
CComQIPtr<IOleObject> pOleObject; |
|
CComQIPtr<IDispatch> pDisp; |
|
|
|
|
|
}; |
|
|
|
OBJECT_ENTRY_AUTO(__uuidof(HelloWorldBHO), CHelloWorldBHO) |