类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
怎么通过Activex得到上一级网页的地址。
比如:
在网页A中点击了一个连接地址,打开了另外一个网页B,网页B中有一个ActiveX,这个ActiveX怎么能得到网页A的地址呢?
网友回答:
SHDocVw::IShellWindowsPtr m_spSHWinds=NULL;
if(m_spSHWinds == NULL)
{
CoInitialize(NULL);
if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows)) != S_OK)
{
CoUninitialize();
return ;
}
else
{
int n = m_spSHWinds->GetCount();//当前打开IE的数目,包括文件夹吧
if(n>0)
{
for(long i=0; i<n; i++)
{
variant_t v = (long)i;
IDispatchPtr spDisp = m_spSHWinds->Item(v);
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if(spBrowser)
{
这里得到了IWebBrowser2接口了,就可以得到URL了
}
}
}else
ShellExecute(NULL,"Open",url,NULL,NULL,0);
}
m_spSHWinds.Release();
CoUninitialize();
}
以上的我在应用程序中成功了,不知道在activex中可以不,你试一下啊
对了,你的网页如果是用脚本打开新的页面或者你打开了网络防火墙的话referrer可能不可用
用IHTMLWindow2::opener看看能不能访问原来的页面