再谈BCB中如何取得IE的多个运行实例? 点名-排名不分先后:帮主,项羽,火哥,虚竹,叶老大,RH,BCB,ALNG,songhtao,Raptor,millet,Hank,comanche......
关于多个IE的实例交互问题,这两天似乎挺多。
不外乎是取得多个IE的运行实例,
还可以再取得HTML页面文档。
接着为所欲为....
大家再BCB中的常常想到的第一个做法是FindWindow。
这个办法似乎不是唯一的,或者最好的。
在VC的源码中,我见过通常都是类似下面这么做的:
SHDocVw::IShellWindowsPtr m_spSHWinds;
m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
if (m_spSHWinds == NULL)
{
AfxMessageBox("Can't get shellwindow instance!");
return FALSE;
}
long nCount = m_spSHWinds->GetCount( );
IDispatchPtr spDisp;
for(long i = 0; i<nCount; i++)
{
_variant_t va(i, VT_I4);
spDisp = m_spSHWinds->Item(va);
SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);
if (spBrowser != NULL)
{
MSHTML::IHTMLDocument2Ptr spDoc(spBrowser->GetDocument());
if (spDoc != NULL)
{
_bstr_t bstrUrl;
BSTR BSTRUrl;
LPSTR pszUrl;
spDoc->get_url(&BSTRUrl);
if(BSTRUrl)
{
bstrUrl = BSTRUrl;
SysFreeString(BSTRUrl);
}
AfxMessageBox((LPSTR)bstrUrl);
}
}
}
实际上,BCB已经提供对SHDocVw的封装,在有些列Server控件页上,
它们是TCppWebBrowser,TCppShellWindows,TCppHTMLDocument。
但很难找到相关的帮助。
BCB应该怎么做?各位大虾,为菜鸟们贡献一点爱心吧。。。
CKER双手合十,虔诚的祈祷.....
让CSDN所有的老大们都来看这个帖子,都来回这个帖子,
让这个帖子有一天可以放入精华区....
正在此时......