解决cef加载flash时弹出黑框的问题

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/77482985

使用cef时,如果没有使用sandbox,并且开启了flash插件,在第一次使用flash时会弹出个黑框。这是flash插件的bug。目前找到三种解决办法:

方法一:

编译程序时加入cef_sandbox.lib静态库,自然就不会出现黑框了。但是为了加入cef_sandbox.lib,有时候会很麻烦,比如:如何编译出cef2623中的cef_sandbox.lib静态库,为了加入cef_sandbox.lib还需要修改一些项目配置,同时启用沙盒后,在某些电脑中会导致子进程无法创建,需要自己另外做一些处理。总之就是使用沙盒很麻烦

方法二:

使用HOOK的方法,拦截创建进程的API,阻止黑框(实际就是cmd程序)弹出,详见:CEF加载FLASH插件时弹出CMD命令行窗口的问题

方法三:

在群里夏思畅大神今天告诉我的方法,直接在自己程序的目录下建立一个名为cmd.exe的程序就可以(可以直接新建个文本文档,改名为cmd.exe)。因为弹出黑框需要使用cmd程序,而系统搜索程序是从进程当前的工作目录开始查找,所以直接这样做可以拦截cmd的调用。这个方法最简单,实用性最强!

为了程序更通用,可以在程序启动时加代码,在自己程序目录建立dummy_cmd.exe,修改一下自己进程ComSpec环境变量(表示的就是cmd程序的路径)的值:

  WCHAR app_path[MAX_PATH] = { 0 };
  GetModuleFileName(NULL, app_path, MAX_PATH);
  PathRemoveFileSpec(app_path);

  std::wstring cmd_path = app_path;
  cmd_path += L"\\dummy_cmd.exe";
  SetEnvironmentVariable(L"ComSpec", cmd_path.c_str());

Redrain QQ:491646717 2017.8.22

时间: 2024-08-10 05:31:00

解决cef加载flash时弹出黑框的问题的相关文章

Ajax加载外部页面弹出层效果实现方法_AJAX相关

本文实例讲述了Ajax加载外部页面弹出层效果实现方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

jggrid在加载的时候表格中间会在加载一次弹出一个“加载中”,怎么去掉这个东西

问题描述 jggrid在加载的时候表格中间会在加载一次弹出一个"加载中",怎么去掉这个东西 解决方案 jqGrid的api里面的有设置的不显示的loadui: "Disable"

Ajax加载外部页面弹出层效果实现方法

本文实例讲述了Ajax加载外部页面弹出层效果实现方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

解决webview加载flash视频黑屏的方法

今天,项目需求修改,需要加载flash视频,本以为很简单,写好代码: webView = (WebView) view.findViewById(R.id.web); WebSettings settings = webView.getSettings(); settings.setPluginState(WebSettings.PluginState.ON); 然后 webView.loadUrl("你的URL"); 然后满心欢喜的去看效果,结果,如果闭着眼睛,是很完美的,因为音乐很

AJAX显示加载中并弹出图层遮挡页面的实现示例_AJAX相关

前言 相信每位开发者都应该有所了解,当用户发出AJAX请求时,如果长时间处于请求阶段,而没有给出用户回应,会给用户造成错觉,导致用户以为我们的系统"没反应"了.这从某方面来讲是一种不友好. 甚至有的时候,用户看不到想要的结果,就会不停的请求,这样会发生意想不到的后果. 所以,当发出AJAX请求时,我们给出一定的措施,保证系统的正确运行和良好的用户体验. 在这里,我使用的是:显示加载中图片,并弹出一个图层,使用户不能再次发出请求. 实现方法 HTML部分: <div id=&quo

AJAX显示加载中并弹出图层遮挡页面的实现示例

前言 相信每位开发者都应该有所了解,当用户发出AJAX请求时,如果长时间处于请求阶段,而没有给出用户回应,会给用户造成错觉,导致用户以为我们的系统"没反应"了.这从某方面来讲是一种不友好. 甚至有的时候,用户看不到想要的结果,就会不停的请求,这样会发生意想不到的后果. 所以,当发出AJAX请求时,我们给出一定的措施,保证系统的正确运行和良好的用户体验. 在这里,我使用的是:显示加载中图片,并弹出一个图层,使用户不能再次发出请求. 实现方法 HTML部分: <div id=&quo

ReportDocument 加载水晶报表弹出输入密码登陆界面,如何消除?

问题描述 VS2008,水晶报表设计的时候并没有使用数据库,而是直接用数据集设计的,完全是按阿泰的视频做的,但是当ReportDocumentmyReport=newReportDocument();myReport.Load("E:\softWork\CS_WEB_DataSet\App_Data\CrystalReport1.rpt");执行到这句时就会弹出要求输入密码登陆数据库的窗口,而实际上这个水晶报表根本就没有连接任何数据库,只是使用了数据集Dataset,怎么也会弹出数据库

outlook收发domino pop3邮件时弹出密码框的解决方法

设置POP3空闲进程断开时间间隔,及outlook自动接收时间. 解决方案: POP3_SESSION_TIMEOUT=10 其中的数值"10"单位是分钟,如果您希望用户的POP3连接断开得快一些,可以设为更小的值,比如5,这样空闲5分钟的进程将被自动断开. 如果pop3空闲设置的是2分钟,OUTLOOK建议设成5分钟,断开闲置pop3的时间<OUTLOOK自动接收的时间. 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng

seajs加载jquery时提示$ is not a function该怎么解决_jquery

jquery1.7以上的都支持模块化加载,只是jquery默认的是支持amd,不支持cmd.所以要用seajs加载jquery时,我们需要稍微做下改动,需要把以下内容做下修改,具体修改方式如下: 把 if (typeof define === "function" && (define.amd)) { define( "jquery", [], function() { return jQuery; }); } 改成 if (typeof defin