64,648
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include < atlbase.h >
#include < mshtml.h >
int main(int argc, char* argv[])
{
BSTR *strURL;
CComPtr <IOleContainer> spContainer;
m_spClientSite-> GetContainer(&spContainer);
CComQIPtr <IHTMLDocument2> spDoc = spContainer;
CComQIPtr <IWebBrowser2> pWebBrowser;
if (spDoc)
{
// 已经得到了 IHTMLDocument2 的接口指针
CComQIPtr <IHTMLWindow2> spWin2;
CComQIPtr <::IServiceProvider> isp; // 为什么要加::,原因是我使用了using namaspace shockwaveflash;
HRESULT hr = spDoc-> get_parentWindow(&spWin2);
if (FAILED(hr))
return hr;
isp = spWin2;
//spWin2-> QueryInterface(IServiceProvider, &isp); // 上面那句换成这个也可以
CComQIPtr <IWebBrowserApp> iwba;
// SID_SWebBrowserApp 和 IID_IWebBrowserApp 定义是一样的
hr = isp-> QueryService(IID_IWebBrowserApp, IID_IWebBrowserApp, (void **)&iwba);
if (FAILED(hr))
return hr;
hr = isp-> QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void **)&pWebBrowser);
if (FAILED(hr))
return hr;
hr = pWebBrowser-> get_LocationURL(strURL);
if (FAILED(hr))
return hr;
return S_OK;
}
printf("Hello World!\n");
return 0;
}
BOOL XDDDDDObject::GetLocationURL(BSTR *strURL)
{
CComPtr <IOleContainer> spContainer;
m_spClientSite-> GetContainer(&spContainer);
CComQIPtr <IHTMLDocument2> spDoc = spContainer;
CComQIPtr <IWebBrowser2> pWebBrowser;
if (spDoc)
{
// 已经得到了 IHTMLDocument2 的接口指针
CComQIPtr <IHTMLWindow2> spWin2;
CComQIPtr <::IServiceProvider> isp; // 为什么要加::,原因是我使用了using namaspace shockwaveflash;
HRESULT hr = spDoc-> get_parentWindow(&spWin2);
if (FAILED(hr))
return hr;
isp = spWin2;
//spWin2-> QueryInterface(IServiceProvider, &isp); // 上面那句换成这个也可以
CComQIPtr <IWebBrowserApp> iwba;
// SID_SWebBrowserApp 和 IID_IWebBrowserApp 定义是一样的
hr = isp-> QueryService(IID_IWebBrowserApp, IID_IWebBrowserApp, (void **)&iwba);
if (FAILED(hr))
return hr;
hr = isp-> QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void **)&pWebBrowser);
if (FAILED(hr))
return hr;
hr = pWebBrowser-> get_LocationURL(strURL);
if (FAILED(hr))
return hr;
return S_OK;
}
return S_FALSE;
}