mfc操作浏览器(1)——执行超链接按钮
2014-11-11 17:53
155 查看
CComQIPtr<IHTMLDocument2> pDoc = m_WebBrowser.get_Document(); IHTMLFramesCollection2 *pCol = NULL; HRESULT hr = pDoc->get_frames(&pCol); //取得分贞的frame数组 ASSERT(SUCCEEDED(hr)); long FrameNum1; hr = pCol->get_length(&FrameNum1); //获取最外面的框架个数 VARIANT vFrame, vIndex; IHTMLDocument2 *pDoc2 = NULL; //我们要找的框架 for (int i = 0; i < FrameNum1; i++) { vIndex.vt = VT_I4; vIndex.lVal = i; //准备取得第0号贞 hr = pCol->item(&vIndex, &vFrame); ASSERT(SUCCEEDED(hr)); //取得的这个接口指针,其实是IHTMLWindow2的接口指针。 IHTMLWindow2 *pWin = (IHTMLWindow2 *)vFrame.pdispVal; hr = pWin->get_document(&pDoc2); ASSERT(SUCCEEDED(hr)); BSTR bFramName = NULL; hr = pWin->get_name(&bFramName); ASSERT(SUCCEEDED(hr)); if (szFrameName == CString(bFramName)) { SysFreeString(bFramName); return pDoc2; } else { IHTMLFramesCollection2 *pCol3 = NULL; hr = pDoc2->get_frames(&pCol3); //取得分贞的frame数组 ASSERT(SUCCEEDED(hr)); long FrameNum2; hr = pCol3->get_length(&FrameNum2); //获取最外面的框架个数 VARIANT vFrame, vIndex; IHTMLDocument2 *pDoc3 = NULL; //我们要找的框架 for (int i = 0; i < FrameNum2; i++) { vIndex.vt = VT_I4; vIndex.lVal = i; //准备取得第0号贞 hr = pCol3->item(&vIndex, &vFrame); ASSERT(SUCCEEDED(hr)); //取得的这个接口指针,其实是IHTMLWindow2的接口指针。 IHTMLWindow2 *pWin1 = (IHTMLWindow2 *)vFrame.pdispVal; hr = pWin1->get_document(&pDoc3); ASSERT(SUCCEEDED(hr)); BSTR bFramName = NULL; hr = pWin1->get_name(&bFramName); ASSERT(SUCCEEDED(hr)); if (szFrameName == CString(bFramName)) { SysFreeString(bFramName); return pDoc3; } else { IHTMLFramesCollection2 *pCol3 = NULL; hr = pDoc3->get_frames(&pCol3); //取得分贞的frame数组 ASSERT(SUCCEEDED(hr)); long FrameNum2; hr = pCol3->get_length(&FrameNum2); //获取最外面的框架个数 VARIANT vFrame, vIndex; IHTMLDocument2 *pDoc4 = NULL; //我们要找的框架 for (int i = 0; i < FrameNum2; i++) { vIndex.vt = VT_I4; vIndex.lVal = i; //准备取得第0号贞 hr = pCol3->item(&vIndex, &vFrame); ASSERT(SUCCEEDED(hr)); //取得的这个接口指针,其实是IHTMLWindow2的接口指针。 IHTMLWindow2 *pWin1 = (IHTMLWindow2 *)vFrame.pdispVal; hr = pWin1->get_document(&pDoc4); ASSERT(SUCCEEDED(hr)); BSTR bFramName = NULL; hr = pWin1->get_name(&bFramName); ASSERT(SUCCEEDED(hr)); if (szFrameName == CString(bFramName)) { SysFreeString(bFramName); return pDoc4; } } } } } }
IHTMLDocument2 *pDoc2 = NULL; //我们要找的框架pDoc2 = FindFrame(L"mainFrame");if (pDoc2){CComQIPtr<IDispatch> pDisp;HRESULT hr = pDoc2->get_Script(&pDisp);if (SUCCEEDED(hr)){TCHAR* szRs = L"formsubmit";DISPID dispid;HRESULT hr = pDisp->GetIDsOfNames(IID_NULL, &szRs,
1,LOCALE_SYSTEM_DEFAULT, &dispid);if (SUCCEEDED(hr)){DISPPARAMS dispparams;memset(&dispparams, 0, sizeof dispparams);dispparams.cArgs = 0;//要传递的参数,注意强烈推荐用下面这个形式。传送string的时候,改为BSTR就可以。 dispparams.cNamedArgs = 0;EXCEPINFO excepInfo;memset(&excepInfo, 0, sizeof(excepInfo));CComVariant
vaResult;UINT nArgErr = (UINT)-1; // initialize to invalid arg hr = pDisp->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);if (SUCCEEDED(hr)){return TRUE;}}}}return FALSE;
相关文章推荐
- asp.net动态生成按钮,点击按钮执行相关操作
- MFC 试图执行系统不支持的操作
- 点击超链接执行js代码实现确认操作
- MFC--快捷键(组合键/热键)与按钮实现操作按钮的方法
- MFC关于Radio按钮的操作
- 点击一个按钮后,它会根据不同的情况执行不同的操作,执行客户段的应用程序
- VBS一键配置VOIP脚本(其中包括VBS操作JS网页中的按钮事件--直接执行确认按钮中的脚本代码)
- aspx 页面根据不同的文本框按下的 回车 执行 不同按钮的服务器端 click事件(浏览器兼容,火狐浏览器)
- vs2008 mfc 试图执行的操作不受支持
- MFC中自定义按钮响应键盘的回车操作
- (window.onunload)只有点击浏览器右上角关闭按钮才执行
- 在web页面上放了一些服务器按钮,在各个按钮的单击事件中都有代码!可不知道哪里出问题了,怎么操作都不能触发这些事件,好象代码一点都不执行!根本没办法调试!请高手指点一二!谢谢!
- JS执行浏览器的后退按钮
- MFC关于Radio按钮的操作
- MFC 添加新消息时“无法执行添加/移除操作,因为代码元素是只读的....”错误(转载)
- 点击按钮可能执行的操作总结
- 用户点击退出后,点击浏览器按钮还能进行操作!!
- MFC程序 打开时 出现 试图执行系统不支持的操作 的提示
- MFC关于Radio按钮的操作
- 解决在浏览器中打开java文件jnlp报错“该文件没有程序与之关联来执行该操作...”