首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

CppWebBrowser有关问题, 在页面呈现后, 如何调用bs页面的js函数

2013-11-30 
CppWebBrowser问题, 在页面呈现后, 怎么调用bs页面的js函数RT....之前已经做了, 从bs页面访问html的控件获

CppWebBrowser问题, 在页面呈现后, 怎么调用bs页面的js函数
RT....   

之前已经做了, 从bs页面访问html的控件获取值
现在要在页面呈现后, 调用bs页面的js函数
求大神.. CppWebBrowser html js
[解决办法]
该回复于2013-11-29 11:21:18被版主删除
[解决办法]


  #include <Mshtml.h>
  #include "SHDocVw_OCX.h"
  bool CrnRunJavaScript(
    IHTMLDocument2 *spDoc,
    LPSTR lpScript,
    LPSTR lpLang//LPSTR lpLang = "JScript";
  ){//通过IHTMLDocument2接口控制IE执行javascript和vbscript代码
    IHTMLWindow2 *pWin;
    VARIANT vRet;
    bool bRet = false;
      if(spDoc != NULL){
        try{
          spDoc->get_parentWindow(&pWin);
            if(pWin != NULL){
              try{
                pWin->execScript(WideString(lpScript), WideString(lpLang), &vRet);
                bRet = true;
              }__finally{
                pWin = NULL;
              }
            }
        }__finally{
          spDoc == NULL;
        }
      }
    return bRet;
  }
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  DWORD TheProcessID, ErrorCode;
  HWND TheWindowHandle=FindWindowEx(NULL,NULL,"IEFrame",NULL);
    if(!TheWindowHandle){//如果找不到IE窗口
      Application->BringToFront();
      ShowMessage("Internet Explorer浏览器没有启动,操作取消");
      return;
    }
  typedef TComInterface<IHTMLDocument2, &IID_IHTMLDocument2> IHTMLDocument2Ptr;
  TCppShellWindows * ptrShellWin = new TCppShellWindows(this);
  //long nCount=ptrShellWin->get_Count();//取得浏览器实例个数
  //或:ptrShellWin->Count//取得浏览器实例个数
  //ShowMessage(nCount);//显示结果
    for(long i = 0; i < ptrShellWin->Count; i++){//i的值按IE的启动顺序
      //TVariantInParam va(i);//编译时提示:W8053 'TVariantInParam' is obsolete,因此用下面的
      TVariant va(i);
      IWebBrowser2Ptr ptrWebBrowser( (IDispatch *) ptrShellWin->Item(va));
      BSTR BSTRType;
      ptrWebBrowser->get_Type(&BSTRType);
      //获取文档的类型,如果是IE窗口,则会返回"HTML 文档",否则BSTRType被设为NULL
        if(BSTRType){
          SysFreeString(BSTRType);
          IHTMLDocument2Ptr ptrHTMLDoc(ptrWebBrowser->get_Document());
            if((IHTMLDocument2 *)ptrHTMLDoc != NULL){
              IHTMLDocument2 *HTMLDocument = NULL;
                if(SUCCEEDED(ptrHTMLDoc->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&HTMLDocument))){
                  LPSTR lpLang = "JScript";
                  CrnRunJavaScript(HTMLDocument,Memo1->Text.c_str(),lpLang);


                  //对话框在IE中出现,如果不关闭程序将处于锁定状态
                  //javascript:window.clipboardData.setData("Text",document.getElementById("ifm0").src); alert("复制到剪贴板成功");
                  //javascript:window.clipboardData.setData("Text",document.getElementById("ifm0").src);
                  //javascript:alert("俺就是那个对话框");
                }
            }
        }
    }
  delete ptrShellWin;
}


[解决办法]
该回复于2013-11-29 11:21:07被版主删除

热点排行