摘要:使用cef时,如果没有使用sandbox,并且开启了flash插件,在第一次使用flash时会弹出个黑框。这是flash插件的bug。目前找到三种解决办法,希望对大家学习flash有所帮助。
使用cef时,如果没有使用sandbox,并且开启了flash插件,在第一次使用flash时会弹出个黑框。这是flash插件的bug。目前找到三种解决办法,希望对大家学习flash有所帮助。
方法一:
编译程序时加入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());
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件Flash频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号