Qt调用Windows Webbrowser控件,调用JS方法

来源:互联网 发布:新加坡 北京 知乎 编辑:程序博客网 时间:2024/05/16 07:46

说明:

Qt版本为4.7.4   

编译工具为VS2008

 

一.需要包含的头文件

#include"ExDisp.h"

#include"comutil.h"

#include"atlcomcli.h"

#include "Mshtml.h"

 

库文件名: comsuppw.lib  comsupp.lib

 

二.代码调用

ui.axWidget->setObjectName(QString::fromLocal8Bit("WebBrowser"));

         ui.axWidget->setFocusPolicy(Qt::StrongFocus);

         ui.axWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"))

        

ui.axWidget->setContentsMargins(0,0, 0, 0);

ui.axWidget->setProperty("DisplayScrollBars",

true);

 

ui.axWidget->queryInterface(IID_IWebBrowser2,(void **)&webBrowser);

 

//这个是禁止报JS错误的

         if(webBrowser)

         {

                   VARIANT_BOOLbValue = true; 

        webBrowser->put_Silent(bValue); 

         webBrowser->Release(); 

}

 

//打开要加载的网页

QString_url("http://192.168.1.69:8080/FFplayer.html");

         _variant_tstrVar(_url.toLocal8Bit().data());

         BSTRbstrText = strVar.bstrVal;

         webBrowser->Navigate(bstrText,NULL, NULL, NULL, NULL);

 

//调用JS方法代码片段

CComQIPtr<IHTMLDocument2>_spDoc;

         webBrowser->get_Document((IDispatch**)(&_spDoc));

         if(_spDoc== NULL)

                   return;

         CComDispatchDriver_spScript; 

         _spDoc->get_Script(&_spScript);

         CComVariant_var1(_playurl.toLocal8Bit().data()), _varRet;

_spScript.Invoke1(L"svLivePlay",&_var1, &_varRet);

 

三.需要注意的问题

1.需要使用MFC库,最好是静态加载;

2.修改main的入口函数,防止报MFC的错误,如下所示:

int APIENTRY_tWinMain(HINSTANCEhInstance,

                     HINSTANCEhPrevInstance,

                     LPTSTR   lpCmdLine,

                     int       nCmdShow)

{

//应用MFC库,防止(在静态库中使用MFC)静态编译无法通过

                            int nRetCode= 0;

                            if (!AfxWinInit(::GetModuleHandle(NULL),NULL, ::GetCommandLine(),0))

                            {

                                      // TODO:更改错误代码以符合您的需要

                                      _tprintf(_T("错误: MFC初始化失败\n"));

                                      nRetCode = 1;

                            }

                            else

                            {

                                      // TODO:在此处为应用程序的行为编写代码。

}

 

//创建对象需要的参数为__argc,__argv

QtSingleApplication a(__argc, __argv);

                            if(a.isRunning())

                            {

                                      return -1;

}

 

//……

}

 

3.需要包含stdafx.h,  targetver.h头文件;

4.如果提示库冲突错误,在命令行里输入“/FORCE:MULTIPLE”编译命令;

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚买了万科天地怎么办 所持股票停牌怎么办 武钢股份退市股票怎么办 买了退市的股票怎么办 国际e庄租期到了怎么办 被汉藏文化骗了怎么办 杏仁吃多了中毒怎么办 出轨怀孕了该怎么办呢 瑞安医保卡丢了怎么办 包裹一直在揽收怎么办 揽收超时的快件怎么办 快递被别人偷了怎么办 行驶证副本丢了怎么办 眼睛进了石灰粉怎么办 高铁网上没票了怎么办 限行尾号是字母怎么办 手指被刺扎肿了怎么办 手上进了小刺怎么办 招投标标书丢了怎么办 冒险岛2装备红了怎么办 宝宝屁股腌红了怎么办 宝宝肛门红痒怎么办啊 宝宝屁屁溃烂了怎么办 脸过敏起红疙瘩怎么办 一岁宝宝屁股红怎么办 屁眼肉凸出来了怎么办 陶笛声音变闷了怎么办 吃三七粉上火了怎么办 红枣核吞下去了怎么办 话梅核吞下去了怎么办 芒果和海鲜吃了怎么办 小孩咳嗽喉咙有痰怎么办 4岁宝宝喉咙有痰怎么办 20天新生儿有痰怎么办 孩子嗓子老是有痰怎么办 买的哈密瓜不甜怎么办 吉他琴颈变形了怎么办 hcg值长得慢怎么办 蚊子老在耳边叫怎么办 刚买来的鲜海参怎么办 天冷手指关节疼怎么办