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

简介: 转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/77482985使用cef时,如果没有使用sandbox,并且开启了flash插件,在第一次使用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

目录
相关文章
|
5月前
|
存储 缓存 IDE
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
在函数计算(FC)中,如果已经按照指示完成了插件的安装,但插件没有显示在SD的菜单中
129 3
|
28天前
|
API 内存技术
用VC 6.0写flash播放器——2、为作为主窗口的对话框添加状态栏
用VC 6.0写flash播放器——2、为作为主窗口的对话框添加状态栏
|
1月前
|
API Windows 内存技术
用VC 6.0写flash播放器——1、在VC 6.0中调用打开文件对话框
用VC 6.0写flash播放器——1、在VC 6.0中调用打开文件对话框
Orbeon form PE 版本 dmv-14 点击 save 按钮之后的执行逻辑
Orbeon form PE 版本 dmv-14 点击 save 按钮之后的执行逻辑
|
Web App开发 缓存 网络协议
Mac 调整启动台 LaunchPad 的图标以及清空DNS缓存
Mac 调整启动台 LaunchPad 的图标以及清空DNS缓存
370 0
|
内存技术
【STM32 .Net MF开发板学习-07】全屏位图无闪烁显示
16位320*240的位图大小为150K字节,而对于EM-STM3210E开发板来说,RAM仅有128K,远不够显示一幅完整位图,红牛的开发板即使有256K的RAM,但是刨去堆、栈及TinyCLR本身所用,剩下的也不多了,所以要显示全屏位图,必须分块显示。
533 0