C++实现WEB功能方法总结
来源:互联网 发布:淘宝二手ps4主机能买吗 编辑:程序博客网 时间:2024/06/08 00:53
C++调用Web进行编程的总结
可执行程序的运行目录下,然后在程序开头增加代码:
cSettings.remote_debugging_port = 8088;//网页调试CEF使用,如果不定义,则不能运行调试工具
触发谷歌啦浏览器进行调试,需要调用如下代码:
CefRefPtr<CefBrowser> browser = g_webBrowserClient->GetBrowser();;
CefString devtools_url = browser->GetHost()->GetDevToolsURL(true);
TCHAR tmpBuf[1024 + 1] = { 0 };
_stprintf(tmpBuf, _T("window.open('%s')"), devtools_url.c_str());
注:腾讯QQ,微信PC端都使用了CEF,而且微信PC端也使用了免费DUILIB开源皮肤库,本人项目中用到的就是此引擎
2. DUILIB库的CActiveXUI控件和IWebBrowser2实现(基于IE浏览器内核)
部分参考代码如下:
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_PaintManager.FindControl(_T("ie")));
if (pActiveXUI) {
IWebBrowser2* pWebBrowser = NULL;
pActiveXUI->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser);
if (pWebBrowser != NULL) {
/*
std::string strPath = ConfigManager::instance()->getSkinPath() + "MailEditorindex.html";
int Len = ::MultiByteToWideChar(CP_ACP, 0, strPath.c_str(), -1, NULL, 0);
wchar_t *buf = new wchar_t[Len];
MultiByteToWideChar(CP_ACP, 0, strPath.c_str(), -1, buf, Len);
std::wstring wstrFilePath = std::wstring(buf);
delete[] buf;
*/
std::wstring wstrFilePath = _T("C:\\Users\\HeShiYang\\Desktop\\demo(2)\\demo\\index.html");//_T("C:\\Users\\HeShiYang\\Desktop\\demo(2)\\demo\\index.html");//
pWebBrowser->Navigate((BSTR)(wstrFilePath.c_str()), NULL, NULL, NULL, NULL);
pWebBrowser->Release();
}
}
3. 使用DUILIB库的CWebBrowserUI控件,该方法是DUILIB自己封装IWebBrowser2实现,基于IE浏览器内核
4. wke(基于WebKit是一个开源的浏览器引擎)
wke是wke.dll是国外大神封装的webkit,体积算是极小的,另外upx压缩下才3M多,不可多得的好东西哦,只是版本旧了些。
一般用法是将wke封装成DUILIB一个浏览器控件来使用(基于wke封装的duilib的webkit浏览器控件)
核心提示:C++于Web通信就是实现C++函数调用JS函数,JS函数调用C++函数
可执行程序的运行目录下,然后在程序开头增加代码:
cSettings.remote_debugging_port = 8088;//网页调试CEF使用,如果不定义,则不能运行调试工具
触发谷歌啦浏览器进行调试,需要调用如下代码:
CefRefPtr<CefBrowser> browser = g_webBrowserClient->GetBrowser();;
CefString devtools_url = browser->GetHost()->GetDevToolsURL(true);
TCHAR tmpBuf[1024 + 1] = { 0 };
_stprintf(tmpBuf, _T("window.open('%s')"), devtools_url.c_str());
browser->GetMainFrame()->ExecuteJavaScript(tmpBuf, "about:blank", 0);
CEF比较厉害的博客
http://blog.csdn.net/mfcing/article/details/43953433
http://www.cnblogs.com/chechen/p/6104943.html
http://blog.csdn.net/wangshubo1989/article/details/50180413
http://blog.csdn.net/zhuhongshu/article/details/70159672
注:腾讯QQ,微信PC端都使用了CEF,而且微信PC端也使用了免费DUILIB开源皮肤库,本人项目中用到的就是此引擎
2. DUILIB库的CActiveXUI控件和IWebBrowser2实现(基于IE浏览器内核)
部分参考代码如下:
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_PaintManager.FindControl(_T("ie")));
if (pActiveXUI) {
IWebBrowser2* pWebBrowser = NULL;
pActiveXUI->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser);
if (pWebBrowser != NULL) {
/*
std::string strPath = ConfigManager::instance()->getSkinPath() + "MailEditorindex.html";
int Len = ::MultiByteToWideChar(CP_ACP, 0, strPath.c_str(), -1, NULL, 0);
wchar_t *buf = new wchar_t[Len];
MultiByteToWideChar(CP_ACP, 0, strPath.c_str(), -1, buf, Len);
std::wstring wstrFilePath = std::wstring(buf);
delete[] buf;
*/
std::wstring wstrFilePath = _T("C:\\Users\\HeShiYang\\Desktop\\demo(2)\\demo\\index.html");//_T("C:\\Users\\HeShiYang\\Desktop\\demo(2)\\demo\\index.html");//
pWebBrowser->Navigate((BSTR)(wstrFilePath.c_str()), NULL, NULL, NULL, NULL);
pWebBrowser->Release();
}
}
3. 使用DUILIB库的CWebBrowserUI控件,该方法是DUILIB自己封装IWebBrowser2实现,基于IE浏览器内核
4. wke(基于WebKit是一个开源的浏览器引擎)
wke是wke.dll是国外大神封装的webkit,体积算是极小的,另外upx压缩下才3M多,不可多得的好东西哦,只是版本旧了些。
一般用法是将wke封装成DUILIB一个浏览器控件来使用(基于wke封装的duilib的webkit浏览器控件)
参考网址: http://www.cnblogs.com/findumars/p/5027146.html
阅读全文
0 0
- C++实现WEB功能方法总结
- 【web】页面缩放和滑动功能实现的方法总结
- 为Web网站添加IP过滤功能实践总结(C#)
- WEB功能测试方法
- ASP.NET AJAX 拖放功能6种实现方法总结
- ASP.NET AJAX拖放功能6种实现方法总结
- android的手机任务管理器,关键功能实现方法总结
- android的手机任务管理器,关键功能实现方法总结
- android的手机任务管理器,关键功能实现方法总结
- android的手机任务管理器,关键功能实现方法总结
- android实现换肤功能的方法总结
- android的手机任务管理器,关键功能实现方法总结
- Android点击Button实现功能的几种方法总结
- Android点击Button实现功能的几种方法总结
- C#@的功能总结
- Web常用功能测试总结
- java web实现界面跳转方法的总结
- C#:实现ShellExecute功能
- libvirt api 虚拟机动态迁移代码示例(非共享存储)
- ORACLE索引原理
- 边框回归(Bounding Box Regression)详解
- js得到连两个时间段之间所有的年-月 获取当前日期 格式化日期 根据指定日期得到该日期该月份的最后一天
- 隐马尔科夫模型(二)
- C++实现WEB功能方法总结
- cookie和session的区别
- 发现了一个好用的WEB项目打印控件--四方打印
- 阿里、百度等多家公司Java面试记录与总结
- C++调用Python模块
- Hadoop MapReduce执行过程中map和reduce执行过程
- 算法题/数组中出现次数超过一半的数字
- Java的反射
- 拨开字符编码的迷雾