有个网页上用的activex控件,叫做ctrl吧
它有个submit方法,参数是网页中的一个form
现在想用vc写一个程序,不通过ie,直接调用
它的这些接口,达到执行sumit(formname)的目的。
网页中的代码是这样写的:
document.all.ctrl.submit(logonform);
submit接口为:
HRESULT submit(
     [in] IUnknown* pForm, 
     [out, retval] long* pRet);
现在在vc中,可以通过dll得到ctrl的信息,可以调用它的submit接口,
只是不知道这个form该怎么样能在vc里生成一个,给它设置一些
表单元素,action的值,等等。
试了试直接:
IHTMLFormElement*form;
hr=CoCreateInstance(CLSID_IHTMLFormElement,NULL,CLSCTX_INPROC_SERVER,IID_IHTMLFormElement,&form);
不过好像没找到对应的clsid,上面这行里的CLSID_IHTMLFormElement不行。
不知道应该怎么弄。请指点一下。谢谢

解决方案 »

  1.   

    IHTMLDocument2::get_all
    IHTMLElementCollecion::get_item
    IHTMLFormElement::Submit
      

  2.   

    在程序里应该如何创建一个IHtmlDocument2呢。用CoCreateInstance?
    对应的clsid是什么呢
      

  3.   

    msdn.microsoft.com/archive/en-us/samples/internet/browser/walkall/default.asp
      

  4.   

    谢谢回复 
    不过还是有点不太清楚。
    它这个方法传进去的是个form,
    我不想用程序访问这个页面再通过IE的接口连接上去
    分析里面的html,form,把一个真实的接口传进去因为里面的action和一些element通过查看代码是可以知道的。
    所以我就想生成一个一样的form给它传过去就应该可以的
    步骤为IHTMLDocument2
    IHTMLDocument2::createElement
    IHTMLDOMNode::setAttribute
    pBodyNode->appendChild没试呢,不知道这样是否可行?
    创建IHTMLDocument2怎么弄?
    hr=CoCreateInstance(CLSID_MHTMLDocument,NULL,CLSCTX_INPROC_SERVER,IID_IHTMLDocument2,(void**)&doc);
    试了一下hr==S_OK,就是不知道对不对。估计应该也是可以的吧