CEF加载PPAPI插件

                       

CEF基于Chromium和Webkit而来,支持PPAPI和NaCI。

CEF3的binary包默认已经支持PPAPI(参考http://magpcss.org/ceforum/viewtopic.php?f=10&t=10509),以cefsimple为例(参考CEF Windows开发环境搭建),可以通过命令行参数来注册PPAPI plugin,通过–url参数传递一个加载对应plugin的html页面。

下面是我测试可用的一个命令行参数

--ppapi-out-of-process --register-pepper-plugins="D:\projects\cef_binary_3.2357.1271.g8e0674e_windows32\Release\stub.dll;application/x-ppapi-stub" --url=file:///d:/projects/cef_binary_3.2357.1271.g8e0674e_windows32/Release/stub.html
   
   
  • 1

stub.html非常简单,代码如下:

<!DOCTYPE html><html><head>  <title>stub</title></head><body><embed id="plugin" type="application/x-ppapi-stub"></body></html>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中stub.dll是我编译的PPAPI SDK里的示例,做了些许改动。stub.c代码如下:

// Copyright (c) 2010 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.// This is the simplest possible C Pepper plugin that does nothing. If you're// using C++, you will want to look at stub.cc which uses the more convenient// C++ wrappers.#include <stddef.h>#include <stdint.h>#include <Windows.h>#include <tchar.h>#include "ppapi/c/pp_errors.h"#include "ppapi/c/pp_module.h"#include "ppapi/c/ppb.h"#include "ppapi/c/ppp.h"#include "ppapi/c/pp_instance.h"#include "ppapi/c/ppp_instance.h"PP_Module g_module_id;PPB_GetInterface g_get_browser_interface = NULL;PP_EXPORT int32_t PPP_InitializeModule(PP_Module module_id,   PPB_GetInterface get_browser_interface) {  // Save the global module information for later.  g_module_id = module_id;  g_get_browser_interface = get_browser_interface;  OutputDebugString(_T("PPP_InitializeModule was called\r\n"));  return PP_OK;}PP_EXPORT void PPP_ShutdownModule() {OutputDebugString(_T("PPP_ShutdownModule was called\r\n"));}PP_EXPORT const void* PPP_GetInterface(const char* interface_name) {  // You will normally implement a getter for at least PPP_INSTANCE_INTERFACE  // here.  return NULL;}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

如你所见,我只是使用OutputDebugString函数输出了调试信息。运行cefsimple,使用DbgView工具可以看到我们输出的信息。


关于PPAPI插件的细节,后面会有一些文章来讲。

相关文章参考:

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/jfdfhh/article/details/86522272
CEF
今日推荐