NPAPI 随笔记一、 在chrome运行 npruntime demo

在chrome运行 npruntime demo,codeproject上的demo 是用于firefox上的,在chrome上使用得修改部分代码。

必要库:windows platform sdk 和  NPAPI SDK

在codeproject下载 npruntime的demo

编译时

缺少头文件npfunctions.h于是找了NPAPI SDK.

未包含 windows.h于是include一下

NP_GetMIMEDescription 方法定义与SDK有冲突

char *
	NP_GetMIMEDescription()
{
	return NPP_GetMIMEDescription();
}

 修改为

const char *
    NP_GetMIMEDescription()
{
    return NPP_GetMIMEDescription();
}

编译成功,后调试时,发现,插件加载失败。

经过多方查找资料,修改了以下部分代码终于成功了。

修改代码

NP_GetEntryPoints方法里面的

  if(pFuncs->size < sizeof(NPPluginFuncs))
    return NPERR_INVALID_FUNCTABLE_ERROR;

追踪发现Chrome 浏览器传递过来的pFuncs->size为80和实际定义的NPPluginFuncs的大小为84 所以严重不通过。注释屏蔽!

NP_Initialize方法里面的

  if(pFuncs->size < sizeof(NPNetscapeFuncs))
    return NPERR_INVALID_FUNCTABLE_ERROR;

追踪发现Chrome 浏览器传递过来的pFuncs->size和实际定义的NPNetscapeFuncs的大小不等所以严重不通过。注释屏蔽!

CPlugin构造函数内

  NPN_InvokeDefault(m_pNPInstance, NPVARIANT_TO_OBJECT(barval), &arg, 1,
      &rval);

调用时抛出异常,注释屏蔽!

做了以上处理好调试正常。

时间: 2024-08-25 02:46:39

NPAPI 随笔记一、 在chrome运行 npruntime demo的相关文章

Redis学习笔记(简单了解与运行)

Redis学习笔记(简单了解与运行) 开源的非关系型数据库 是REmote Dictionary Server(远程字典服务器)的缩写,以字典结构存储数据 允许其他应用通过TCP协议读写字典中的内容. Redis支持存储的键值数据类型 字符串类型 散列类型 列表类型 集合类型 有序集合类型 Redis的特性 通过一个列子看出Mysql和Redis的存储区别 例如: (存储一篇文章,文章包括:标题(title),正文(content),阅读量(views),标签(tags)) 需求: 把数据存储在

发现问题 解决问题:用 Chrome 运行Android应用

说到Chrome运行android程序,不得不说一个东西,那就是"Android Runtime for Chrome(ARC)",ARC是Google最新推出的?Chrome OS 运行Android程序的运行时.???? ???????但遗憾的是,ARC已经被打上了"Chrome OS专属"的标记,只能运行在Chrome上,并且只能运行Google提供的四款Android App,不能运行其他的.所以一般人无法在桌面版Chrome浏览器上使用.值得庆幸的是,一名

【安卓笔记】检测服务是否运行

/** * 判断服务是否后台运行 * * @param context * Context * @param className * 判断的服务名字 * @return true 在运行 false 不在运行 */ public static boolean isServiceRun(Context mContext, String className) { boolean isRun = false; ActivityManager activityManager = (ActivityMan

Apcahe Shiro学习笔记(一):简介及运行官方Demo

一.Apache Shrio: apache shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的的解决方案的认证,授权,加密,会话管理. 支持认证跨一个或多个数据源(LDAP,JDBC,kerberos身份等) 执行授权,基于角色的细粒度的权限控制. 增强的缓存的支持. 支持web或者非web环境,可以在任何单点登录(SSO)或集群分布式会话中使用. 主要功能是:认证,授权,会话管理和加密. 二.下载Shrio分发源码: 运行Demo需要使用Apache Ma

linux chrome运行android应用方法

chromeos-apk 是一个可以讲android的apk程序包装成chrome可以运行的插件的工具.github的地址是: https://github.com/vladikoff/chromeos-apk 使用方法: 安装 npm install chromeos-apk -g 转换 chromeos-apk chrome 通过开发者模式来加载生成的插件 现在加载会不成功,因为chrome缺少 ARC 库,所以通过 https://bitbucket.org/vladikoff/archo

Ubuntu下Chrome运行Silverlight程序

Ubuntu 14.04.1下运行Terminal,安装Pipelight输入以下命令: sudo add-apt-repository ppa:pipelight/stable sudo apt-get update sudo apt-get install --install-recommends pipelight-multi sudo pipelight-plugin --update 启用Silveright插件: sudo pipelight-plugin --enable silv

在Chrome运行Bootstrap Table测试程序报错

在学习Flask的过程中,一直在寻找一个合适的前端框架,用了一段时间的EasyUI,觉得美观还有使用习惯不是很符合个人风格,就有意转向Bootstrap. 因为以开发管理系统为主,表格控件是影响我选择前端框非常重要的因素.Bootstrap自带的表格控件功能不是很丰富,在网上搜了一下,找到一个叫Bootstrap Table 的控件,基于MIT协议的开源控件. 下载建立相关目录,就按照官方例子写了一个简单的测试程序,代码如下: <!DOCTYPE html> <html>   &l

How to Re-Enable NPAPI and Recover Citrix Receiver Chrome Plugin

To improve Chrome's security and stability, Google announced late last year that NPAPI plugin support, a capability we've depended on for years, will be disabled by default in Chrome in April 2015. The NPAPI plugin that Receiver for Windows and Mac i

如何使用Chrome运行参数 个性化你的谷歌浏览器

上一篇文章列出了 Chrome 所有的运行参数,下面介绍一下如何通过这些参数来启动你的浏览器. http://alanland.iteye.com/blog/604025 本文针对第一次使用 Chrome 启动参数(同运行参数)的朋友.原来是截了图的,不过编辑器里的插入图片功能换了几个浏览器都不能用,不知道怎么事,直接的拷贝粘贴也不好使,郁闷~~ (Windows) 一:找到你电脑上 Chrome 的快捷方式.右击选择属性. 二: 选择 [快捷方式] Tab 页. 三:在 [快捷方式] Tab页