CEFGlue 加载FLASH 使用HOOK 方式 解决 CEF 加载 PPAPI FLASH 插件时弹出 CMD 命令行 窗口的问题

众所周知 谷歌 从CEF 45版本以后不再支持 NPAPI 类型的插件,但支持PPAPI  加载方法如下:

1,下载pepflashplayer.dll  至程序目录 

2, 新建类继承 CefApp 类  重写 OnBeforeCommandLineProcessing 方法

3 , 在 OnBeforeCommandLineProcessing 方法 中 添加 如下代码:

commandLine.AppendSwitch("ppapi-flash-version", "19.0.0.185");
commandLine.AppendSwitch("ppapi-flash-path", @"PepperFlash\pepflashplayer.dll");

加入两行命令行与参数  为 flash 版本  与 dll 路径.  即可成功加载flash 插件.  但是有个普遍性的问题 :

首次加载含有flash 插件页面是 会闪现弹出CMD 命令行黑窗口,  后经过排查 此窗口应该是 flash 插件中的BUG 倒至,  在没有更好的解决办法之前,我们暂时可以用 进程HOOK 的方式 拦截弹出的窗口, 通过特征符查找 dll 中找到 not sandboxed 字符 , 即可以通过匹配 这个特征符进行拦截.

方法如下:

1,到 https://easyhook.github.io/downloads.html 这个网站 下载 easyhook  ,  拷贝 easyhook.dll 和 easyhook32.dll ,  在项目中引用 easyhook.dll  , 另一个放那就行 不能引用.

2,新建类 ProcessHook  添加调用方法:

  public void InitHook()
        {
            var CreateFileHook = LocalHook.Create(EasyHook.LocalHook.GetProcAddress("kernel32.dll", "CreateProcessA"), new CreateProcessDelegate(CreateProcessHooked), null);
            CreateFileHook.ThreadACL.SetExclusiveACL(new int[] { });
            
        }
3,  在Program 类 Main 方法中 调用
InitHook() 
即可:

完整ProcessHook 类 至 http://download.csdn.net/download/zx2356/9533010  下载.


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值