我是使用cwebbrowser2控件来浏览网页。现在打开一个网页,我想向其中的input框中填写数据,并点击按钮提交表单。请问这个动作如何实现!!请提供相应的代码。 谢谢。对了,告诉我需要包含哪些头文件。在对话框中使用。

解决方案 »

  1.   

    用COM接口的mshtml是一样的。Cwebbrowser2中也有相同的接口,一下子记不起来了
    包含的头文件是
    #import   <mshtml.tlb>   //   Internet   Explorer   5   
    #import   <shdocvw.dll>   
    #include   "Shlwapi.h"   
    #pragma   comment(lib,"Shlwapi.lib")  
    下面是COM实现的代码
    CoInitialize(NULL);  
    SHDocVw::IShellWindowsPtr   m_spSHWinds;   
    if(m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows))   ==   S_OK)   
    {   
    IDispatchPtr   spDisp;  long   nCount   =   m_spSHWinds->GetCount();   
    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)   
    {   
    IDispatchPtr   spDisp;   
    if(spBrowser->get_Document(&spDisp)   ==   S_OK   &&   spDisp!=   0   )   
    {   
    MSHTML::IHTMLDocument2Ptr   spHtmlDocument(spDisp);   
    MSHTML::IHTMLElementPtr   spHtmlElement;   
    if(spHtmlDocument==NULL)   
    continue;   
    spHtmlDocument->get_body(&spHtmlElement);   
    if(spHtmlDocument==NULL)   
    continue;   HRESULT   hr;    MSHTML::IHTMLElementCollection*   pColl=NULL;  
     
    hr=spHtmlDocument->get_all(&pColl);   if(pColl!=NULL&&SUCCEEDED(hr))   
    {   
    long   lcount   =   0;   
    pColl->get_length(&lcount);   
    for(int   i=0;i<lcount;i++)   
    {   
    _variant_t   index;   
    index.vt=VT_I4;   
    index.intVal=i;   
    IDispatchPtr   disp;   
    disp=pColl->item(index,index);   
    ....略
    }}网页文档的接口为IHTMLDocument2可以通过IE COM对象的get_Document方法来得到网页的接口如下语句:
                     //hr = m_spWebBrowser2- >get_Document(&spDisp);
                 //CComQIPtr< IHTMLDocument2,
                   //&IID_IHTMLDocument2 > spHTML;
                 //spHTML = spDisp;
      

  2.   

    在对话栏中加入webbrowser控件之后,在上面加入一像IE一样的地址栏。
    编程方法如下:一、在对话框中加入一edit控件。通过classwizard为edit控件添加成员变量。
    Category为control.TYPE为CEdit ,成员为m_edit.
    点OK二、不要去掉原来对话框上的“确定”按钮。
    也通过classwizard为控件添加变量和单击的消息。
    再点edit code进入编辑代码;以下内容为在其中插入的代码void CWebBrowserDlg::OnOK() 
    {
      // TODO: Add extra validation here//m_browser.Navigate(m_url, NULL, NULL, NULL, NULL);
      CString string;m_edit.GetWindowText(string);
    m_browser.Navigate(string, NULL, NULL, NULL, NULL);
    //注释掉下面这句  
    //  CDialog::OnOK();}