Program Visual C++
IHTMLDocument2 에서 IWebBrowser2 인터페이스 구하기... |
HisPark
2007. 3. 29. 19:57
제목에서 말한 걸 할려구 갖은 방법을 다 써봐도 잘 안되더군요...
찾아낸 방법이 예전에 ActiveX 에서 자신을 포함한 웹브라우저를 찾는 방법을 이용하니 제대로 찾아지더군요..
다음은 코드입니다... 필요하신 분들 참고하시기 바랍니다.
// Get IOleContainer interface pointer
IOleContainer* pContainer;
hr = spDoc->QueryInterface(IID_IOleContainer, (void**)&pContainer);
if(FAILED(hr) || pContainer == NULL)
return FALSE;
IServiceProvider *pISP = NULL;
// Get IServiceProvider interface pointer.
hr = pContainer->QueryInterface(IID_IServiceProvider, (void **)&pISP);
pContainer ->Release();
if(FAILED(hr) || pISP == NULL)
return FALSE;
// Get IWebBrowser2 interface pointer.
hr = pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pIExplorer);
pISP->Release();
if(FAILED(hr) || pIExplorer == NULL)
{
pIExplorer = NULL;
return FALSE;
}
찾아낸 방법이 예전에 ActiveX 에서 자신을 포함한 웹브라우저를 찾는 방법을 이용하니 제대로 찾아지더군요..
다음은 코드입니다... 필요하신 분들 참고하시기 바랍니다.
// Get IOleContainer interface pointer
IOleContainer* pContainer;
hr = spDoc->QueryInterface(IID_IOleContainer, (void**)&pContainer);
if(FAILED(hr) || pContainer == NULL)
return FALSE;
IServiceProvider *pISP = NULL;
// Get IServiceProvider interface pointer.
hr = pContainer->QueryInterface(IID_IServiceProvider, (void **)&pISP);
pContainer ->Release();
if(FAILED(hr) || pISP == NULL)
return FALSE;
// Get IWebBrowser2 interface pointer.
hr = pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pIExplorer);
pISP->Release();
if(FAILED(hr) || pIExplorer == NULL)
{
pIExplorer = NULL;
return FALSE;
}