WebBrowser控件——设置滚动条位置
来源:互联网 发布:天正软件提示过期 编辑:程序博客网 时间:2024/06/07 22:21
遇到一个问题:在用WebBrowser控件打开网页后,让网页中的滚动条滚动到最底部。
在网上找到了方法:用DCOM组件技术,获取HTML接口指针。(前一阵做调用网页中的JavaScript函数也是采用这种技术)。代码如下:
boolput_scrollTop()
{
HRESULT hr;
CComPtr <IDispatch > spDisp;
IHTMLDocument2 *spDoc = NULL;
spDisp = m_objWebBrowser.GetDocument();
hr = spDisp->QueryInterface( IID_IHTMLDocument2, ( void** )&spDoc );
ASSERT( SUCCEEDED( hr ) );
IHTMLElement* pElement = NULL;
hr = spDoc->get_body( &pElement );
ASSERT( SUCCEEDED( hr ) );
IHTMLElement2* pElement2 = NULL;
hr = pElement->QueryInterface( IID_IHTMLElement2, ( void** )&pElement2 );
ASSERT( SUCCEEDED( hr ) );
// 获得网页中滚动条的全部高度
long scrollTop;
pElement2->get_scrollHeight( &scrollTop );
// 设置滚动条与顶端的偏移量
pElement2->put_scrollTop( scrollTop );
}
在实现的过程中又发现另外一个问题,对于有多个Frame的网页,上面的方法不好用,于是采用了下面的方法:
boolput_scrollTop( IDispatch* pDisp )
{
HRESULT hr;
IHTMLDocument2 *spDoc = NULL;
IHTMLElementCollection* pCollection;
hr = pDisp->QueryInterface( IID_IHTMLDocument2, (void**)&spDoc );
if ( FAILED( hr ) )
{
return false;
}
hr = spDoc->get_all(&pCollection);
if ( FAILED( hr ) )
{
return false;
}
long len;
hr = pCollection->get_length(&len);
if ( FAILED( hr ) )
{
return false;
}
// 遍历所有的元素
for (long l=0; l <len; l++)
{
VARIANT varIndex, var2;
VariantInit(&varIndex);
VariantInit(&var2);
varIndex.vt = VT_I4;
varIndex.lVal = l;
IDispatch* spDisp = NULL;
pCollection->item( varIndex, var2, &spDisp );
IHTMLElement* pElem;
spDisp->QueryInterface( IID_IHTMLElement, (LPVOID*) &pElem );
CComBSTR tagName;
pElem->get_tagName(&tagName);
CString str = tagName;
str.MakeUpper();
//if ( str.Compare( _T( "IFRAME" ) ) == 0 || str.Compare( _T( "FRAME" ) ) == 0 )
{
IHTMLElement2* pElement2 = NULL;
hr = pElem->QueryInterface( IID_IHTMLElement2, ( void** )&pElement2 );
if ( FAILED( hr ) )
{
return false;
}
long lScrollHeight;
hr = pElement2->get_scrollHeight( &lScrollHeight );
if ( FAILED( hr ) )
{
return false;
}
hr = pElement2->put_scrollTop( lScrollHeight );
if ( FAILED( hr ) )
{
return false;
}
pElement2->Release();
}
pElem->Release();
spDisp->Release();
}
pCollection->Release();
spDoc->Release();
return true;
}
原文地址:http://blog.csdn.net/primer_programer/archive/2007/12/26/1968783.aspx
- WebBrowser控件——设置滚动条位置
- WebBrowser控件——设置滚动条位置
- WebBrowser控件——设置滚动条位置
- 设置滚动条位置
- 滚动条位置设置
- WebBrowser中怎么获取滚动条位置
- WPF WebBrowser控件去除滚动条
- juqery 控件滚动条位置
- datagridview 滚动条位置设置
- C# webbrowser如何获取滚动条的位置?
- webbrowser滚动条控制
- webbrowser滚动条问题
- 去掉winform中webBrowser控件的滚动条
- webbrowser禁止右键菜单、滚动条,控件XP外观
- js 设置滚动条的位置
- ScrollView 设置滚动条的初始位置
- ScrollView 设置滚动条的位置
- Swing 设置JScrollPanel 滚动条位置
- Merge Two Sorted Lists
- intent.setFlags方法中的参数值含义
- ob_start()超全用法
- POJ2195--Going Home
- android 读取短信
- WebBrowser控件——设置滚动条位置
- hdu2080夹角有多大II
- mysql 基准测试和性能分析
- Py2exe打包成exe
- RAC关键信息(OCR/VOTE DISK/ASM DISK HEADER)备份
- uva11181 - Probability|Given(条件概率)
- TCP 與 UDP
- Java程序的调试运行与调试连接
- 对Dialog添加视图CHtmlView,并获取滚动条的滚动范围