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

阿胡、 2013-11-26 02:45:32
RT....

之前已经做了, 从bs页面访问html的控件获取值
现在要在页面呈现后, 调用bs页面的js函数
求大神..
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝龙哥 2013-11-26
  • 打赏
  • 举报
回复

  #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-26
  • 打赏
  • 举报
回复
引用 1 楼 oXiaoFu1 的回复:
CppWebBrowser是什么,没用过额,求大神指点
调用web页面

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧