browser-C++ Navigate2()怎么不能跳转到指定的网址

问题描述

C++ Navigate2()怎么不能跳转到指定的网址

void EnumIE(void)

{

::CoInitialize(NULL);//初始化com库
CComPtr spShellWin;

HRESULT hr=spShellWin.CoCreateInstance(CLSID_ShellWindows);

if (FAILED(hr))

{

return;

}

long nCount=0; //取得浏览器实例个数(Explorer和IExplorer)

spShellWin->get_Count(&nCount);

if (0==nCount)

{

return;

}

for(int i=0; i
{
CComPtr spDispIE;

hr=spShellWin->Item(CComVariant((long)i), &spDispIE);

if (FAILED(hr)) continue;

CComQIPtr<IWebBrowser2>spBrowser=spDispIE;   //注意是IE浏览器
if (!spBrowser) continue; 

spBrowser->put_Visible(true); //Commentout this line if you dont want the browser to be displayed

 //Modify by jncao 2007-09-17
//*******************************************************************************
CString cIEUrl_Filter;  //设置的URL(必须是此URL的网站才有效);
cIEUrl_Filter="https://w.seu.edu.cn/portal/index.html"; //设置过滤的网址
//*******************************************************************************
VARIANT var;
var.vt = VT_BSTR;
var.bstrVal=CComBSTR(cIEUrl_Filter);

hr=spBrowser->Navigate2(&var,NULL,NULL,NULL,NULL) ; //Open the URL page
if(FAILED(hr))
{
    cout<<"Navigete2 Failed!!"<<endl;
    return;
}
cout<<"good-1"<<endl;

//spBrowser->Navigate2(vaURL,null,null,null,null) ; //Open the URL page
CComPtr<IDispatch> spDispDoc;
hr=spBrowser->get_Document(&spDispDoc);
if (FAILED(hr)) continue; 

CComQIPtr<IHTMLDocument2> spDocument2 =spDispDoc;
if (!spDocument2) continue;      

EnumForm(spDocument2); //枚举所有的表单
cout<<"good0"<<endl;

//*******************************************************************************
//CString cIEUrl_Filter;  //设置的URL(必须是此URL的网站才有效);
//cIEUrl_Filter="https://w.seu.edu.cn/portal/index.html"; //设置过滤的网址
//*******************************************************************************

/* CComBSTR IEUrl;
spBrowser->get_LocationURL(&IEUrl);

CString cIEUrl_Get; //从机器上取得的HTTP的完整的URL;
cIEUrl_Get=IEUrl;
cIEUrl_Get=cIEUrl_Get.Left(cIEUrl_Filter.GetLength()); //截取前面N位

if (cIEUrl_Get.Compare(cIEUrl_Filter)==0)
{
    // 程序运行到此,已经找到了IHTMLDocument2的接口指针
    EnumForm(spDocument2); //枚举所有的表单
}    */

}

::CoUninitialize();
}

这个是我根据http://blog.csdn.net/fjssharpsword/article/details/6080572这个改写的函数EnumIE(),其余函数都没变

解决方案

http://blog.csdn.net/lee353086/article/details/38359095

解决方案二:

先看有没有正确拿到浏览器句柄等 这样才能跳转API调用

解决方案三:

问题已解决,还是自己水平太菜了!!!代码更改为如下,顺利通过
void EnumIE(void)

{

OleInitialize(NULL);//初始化com库

HRESULT hr;

IWebBrowser2* spBrowser;
VARIANT vPostData;
VariantInit(&vPostData);

CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
                   IID_IWebBrowser2, (void**)&spBrowser);

if (spBrowser==NULL) return; 

spBrowser->put_Visible(VARIANT_TRUE); //Commentout this line if you dont want the browser to be displayed

VARIANT vEmpty;
VariantInit(&vEmpty);
VARIANT var;
var.vt = VT_BSTR;
//var.bstrVal=CComBSTR(cIEUrl_Filter);
var.bstrVal = SysAllocString(L"https://w.seu.edu.cn/portal/index.html");

hr=spBrowser->Navigate2(&var,&vEmpty,&vEmpty,&vEmpty,&vEmpty) ; //Open the URL page
if (SUCCEEDED(hr))
{
    spBrowser->put_Visible(VARIANT_TRUE);
}
else
{
    spBrowser->Quit();
}

BOOL bReady=0;
BSTR bsStatus;
CString mStr;
while(!bReady)  //This while loop maks sure that the page is fully loaded before we go to the next page
{
    //如果用户手动关闭IE窗口,退出循环
    SHANDLE_PTR hHwnd;
    spBrowser->get_HWND(&hHwnd);
    if (NULL == hHwnd)
    {
         bReady=1;
         return;
    }

    //等待网页完全打开,退出循环
    spBrowser->get_StatusText(&bsStatus);
    mStr=bsStatus;
    if(mStr=="完毕" || mStr=="完成" || mStr=="Done" )
    {
        bReady=1;
    }

    Sleep(200);
 }

CComPtr<IDispatch> spDispDoc;
hr=spBrowser->get_Document(&spDispDoc);
if (FAILED(hr))
{
    spBrowser->Release();
    OleUninitialize();
    return;
}

CComQIPtr<IHTMLDocument2> spDocument2 =spDispDoc;
if (!spDocument2)
{
    spBrowser->Release();
    OleUninitialize();
    return;
}

EnumForm(spDocument2); //枚举所有的表单

spBrowser->Release();
OleUninitialize();

}

时间: 2024-09-12 04:39:30

browser-C++ Navigate2()怎么不能跳转到指定的网址的相关文章

多个Excel工作表中怎么快速跳转到指定表?

  1.先来看一下,我建立了很多工作表,大概有十几个 2.在左下角有一个绿色小三角,点击这里可以切换不同的工作表,你左键点击,尝试一下 3.但是我们不想一个一个翻看工作表,直接跳转到我想去的工作表怎么办?右键单击这个小三角,看看小工具 4.弹出一个列表,你可以从中选择想看的工作表,点击确定按钮 5.这样你就会跳转到指定的工作表了.

Excel2013快速跳转至指定工作表

  我先来看一下,我建立了很多工作表,大概有十几个 在左下角有一个绿色小三角,点击这里可以切换不同的工作表,你左键点击,尝试一下 但是我们不想一个一个翻看工作表,直接跳转到我想去的工作表怎么办?右键单击这个小三角,看看小工 弹出一个列表,你可以从中选择想看的工作表,点击确定按钮 这样你就会跳转到指定的工作表了. 分类: Excel教程

如何让maven跳过某些指定的Test用例

问题描述 如何让maven跳过某些指定的Test用例 maven打包的时候,会默认取执行Test用例,当然也可以忽略错误的,也可以直接跳过. 现在需求是这样的,能不能指定忽略某些测试用例? 比如我有一类测试用例,是用来测试Http接口的,这些接口如果测我本地的就是url就是localhost:8080/..../ 而这种我肯定是不想让maven来执行这些用例的,因为你要是本机没起服务,那这个测试用例就得等到timeOut才会执行完.一般都是运维得打包.那肯定这个url的服务是访问不到的 但又不是

javascript-如何让一个页面自动跳转到指定的frame中

问题描述 如何让一个页面自动跳转到指定的frame中 就是只要进去或者加载这个界面,这个界面会在指定的frame中显示,而不是全屏显示. 解决方案 页面定时自动跳转到另一个页面跳转到另一个页面自动延时跳转到指定页面脚本代码 解决方案二: 可以这样: 第一你先构建你的框架页面 比如 A010.jsp 它里面就是一个frame的集合 <frameset> <frame name = 'left' src="xxxxxxx"> <frame name = 'ma

怎么在js中 alert点击那个确定 然后跳转到指定页面 要正确的

问题描述 怎么在js中 alert点击那个确定 然后跳转到指定页面 要正确的 怎么在js中 alert点击那个确定 然后跳转到指定页面 要正确的(我是这样写的alert("您没有登录,请登录后使用.."); window.location.href = '../admin/login.aspx';) 可是他跳到404页面了 怎么解决?? 解决方案 和alert无关,你的../admin/login.aspx这个地址错误了.你传递这个地址浏览器会返回上级目录接上admin/login.a

javascript-请问网页中如何用js实现跳转到指定行数?

问题描述 请问网页中如何用js实现跳转到指定行数? 如题,请问如何用js实现点击跳转到相应的网页位置(当前网页的位置,如回到顶部) 是否可以实现跳转到制定div?还是要指定跳转到坐标?求一个实例.谢谢先~ 解决方案 可以跳转到指定锚点 url中添加 url#aaa

android-Android 如何从html5界面中的一个按钮跳转至指定的一个Activity

问题描述 Android 如何从html5界面中的一个按钮跳转至指定的一个Activity Android 如何从html5界面中的一个按钮跳转至指定的一个Activity呢 解决方案 webview注入js监听点击事件,然后跳转 参考http://blog.csdn.net/zzf112/article/details/19618101/ 解决方案二: 这个确实没用过,回头我看看,涉及到html与activity交互 解决方案三: 定义本地跳转方法,添加暴露接口道WebView,在js中调用即

java 怎么实现跳转到指定浏览器

问题描述 java怎么实现跳转到指定浏览器比如ios手机请求时自动跳转到指定safari浏览器?谢谢 解决方案 解决方案二:没有人知道么...解决方案三:可以提示出最好使用哪个浏览器,不能直接跳,都是在本机自己默认的浏览器解决方案四:这是java打开IE的publicclassOpenIE{publicstaticvoidmain(String[]args){Stringurl="www.baidu.com";ProcessBuilderbuilder=newProcessBuilde

asp.net分页,用一个文本框输入页面,按钮跳转到指定的分页的页面

问题描述 datalist已经查询出结果,asp.net分页已写好,用一个文本框输入页面,按钮跳转到指定的分页的页面,分页已经写好,就是不知道怎么在文文本框输入页面后跳转到指定的分页的页面,请各位给个思路 解决方案 解决方案二:傳入參數pageIndex重新執行sql語句綁定到datalist解决方案三:传入参数是指,页面跳转的时候把参数带上吗?我要跳转到本页面的,参数怎么弄呢?解决方案四:文文本框输入页面后跳转到指定的分页的页面?在跳转按钮或者链接里面想跳转到:<inputid=p><