VC/C++/MFC 获取IE浏览器的滚动条位置
2013-02-08 16:25
507 查看
尝试过各种常规方法去获取,都获取不到,到最后使用JS进行获取了.同时,也提供了一种在VC/C++/MFC下执行网页JS代码的方法.话不多说,看代码:
1 加入头文件:
2 代码实现
通过这个方法,就可以滚动条的位置了.至于 IHTMLDocument2* pDoc这个对象,获取方法有很多种,下次我再发获取IHTMLDocument2* 的代码.
如果大家还有什么更好的方法,谢谢一起交流!
本文出自 “钟斌的博客” 博客,请务必保留此出处http://binge518.blog.51cto.com/1554719/1133098
1 加入头文件:
#import "C:\\windows\\system32\\msscript.ocx" using namespace MSScriptControl;
2 代码实现
CString runJS(IHTMLDocument2* pDoc) { //使用前已经初始化com ::CoInitialize(NULL); HRESULT hr; IScriptControlPtr pScriptControl(__uuidof(ScriptControl)); pScriptControl->Language = "JScript"; pScriptControl->AllowUI = TRUE; CString jsStr = _T("function getScroll()\ {var t, l, w, h;\ if (document.documentElement && document.documentElement.scrollTop)\ {\ t = document.documentElement.scrollTop;\ l = document.documentElement.scrollLeft;\ } \ else if (document.body)\ { \ t = document.body.scrollTop;\ l = document.body.scrollLeft;\ } \ return l+\"|\"+t;\ } "); LPSAFEARRAY psa; SAFEARRAYBOUND rgsabound[] = { 1, 0 }; // 1 elements, 0-based int i; psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound); if (!psa) { return NULL; } VARIANT vFlavors[1]; for (i = 0; i < 1; i++) { VariantInit(&vFlavors[i]); V_VT(&vFlavors[i]) = VT_BSTR; } V_BSTR(&vFlavors[0]) = SysAllocString(L"TC_P"); long lZero = 0; hr = SafeArrayPutElement(psa, &lZero,&vFlavors[0]); for(i=0;i<1;i++) { SysFreeString(vFlavors[i].bstrVal); } _bstr_t exp = jsStr; pScriptControl->AddCode(exp); IHTMLDocument2 *objDocument1=NULL; IHTMLWindow2* pIHTMLWindow1 = NULL; objDocument1 = pDoc; if(objDocument1) { objDocument1->get_parentWindow(&pIHTMLWindow1); pScriptControl->AddObject("window", pIHTMLWindow1, VARIANT_TRUE); } _variant_t outpar = pScriptControl->Run("getScroll", &psa); outpar.ChangeType(VT_BSTR,NULL); SafeArrayDestroy(psa); ::CoUninitialize(); return outpar.bstrVal; }
通过这个方法,就可以滚动条的位置了.至于 IHTMLDocument2* pDoc这个对象,获取方法有很多种,下次我再发获取IHTMLDocument2* 的代码.
如果大家还有什么更好的方法,谢谢一起交流!
本文出自 “钟斌的博客” 博客,请务必保留此出处http://binge518.blog.51cto.com/1554719/1133098
相关文章推荐
- [C++ MFC VC] 虚函数表指针的位置
- VC MFC 获取屏幕大小 程序窗口大小位置 控件大小位置
- VC++ MFC获取对话框上控件的位置
- JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸
- VC MFC程序,在About对话框中获取并显示程序的版本号
- JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
- JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
- C/C++ Windows API——获取鼠标位置的窗口句柄
- MFC窗口位置和大小的获取
- DOM之获取滚动条位置
- 程序关联文件 获取双击文件路径 MFC/VC
- VC/MFC 从WebBrower 中获取 HTML 和文本
- JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
- 获取滚动条的位置
- [VC MFC C++ flex bison] flex example(Pascal-like language scanner)
- 将屏幕保存为图片 将当前MFC程序保存为图片 c++ vc
- 将屏幕保存为图片 将当前MFC程序保存为图片 c++ vc
- 小程序之一键回到顶部和获取滚动条当前位置
- VC MFC SDI/MDI框架各部分指针获取方式
- VC MFC SDI/MDI框架各部分指针获取方式