IWebBrowser2响应
class as:public IDispatch
{
virtual HRESULT STDMETHODCALLTYPE Invoke(
DISPID dispidMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{... case DISPID_NEWWINDOW2:
IWebBrowser2 *pIE;
hr = CoCreateInstance(CLSID_InternetExplorer, NULL,
CLSCTX_SERVER, IID_IWebBrowser2,
(void**)&pIE);
if (hr == S_OK)
{
IDispatch *p;
//pIE->AddRef();
pIE->get_Application(&p);
//p->QueryInterface(pDispParams->rgvarg[1].ppdispVal);
*pDispParams->rgvarg[1].ppdispVal=p;
//LPOLESTR lpURL=NULL;
BSTR lpURL=SysAllocString(L"http://localhost");
pIE->put_RegisterAsBrowser(1);
hr=pIE->get_LocationURL(&lpURL);//此处一直为失败
hr=pIE->get_LocationName(&lpURL);//此处一直为失败
if (hr == S_OK)
{
m_strNewUrl=lpURL;
}
pIE->Release();
...
}}如上,在响应NEWWINDOW2时,临时创建了一个IWebBrowser2,试图获取新打开窗口的url,却一直获取失败,各位看看是怎么回事,有解决方法没?
2、是否在NEWWINDOW2没有执行完毕之前是获取不到的。
感觉比较特殊,
它居然比DISPID_BEFORENAVIGATE2都前,
所以比较难获取
本人和guo_wei一样怀疑可能要运行完才会得到地址,相当于打开一个隐藏的IWebBrowser2,然后去获取,真是麻烦
不知有没有简单的方法