[Plugin] 撰寫 firefox plugin 最簡單方法

firefox plug-in 立即下载

原文地址上不去,得翻墙所以只好贴过来了



如果想讓你的 binary 軟体元件在瀏覽器上能夠執行, 你需要實做一些規定的介面. 這樣的程式就能像 Flash 一樣, 嵌入在網頁中, 讓使用者使用. 然而不同的瀏覽器要實做的介面是不一樣的.

若你希望在 IE 上要能執行, 則你的元件必須實做 ActiveX 的介面

若你希望在 Firefox 或 Opera 甚至是 Google 的 Chrome 瀏覽器上也能執行你的程式,  那麼你的元件必須實做 NPAPI 介面.

這一切都要怪微軟是屬於封閉架構, 這使得一些跨平台的軟体開發組織, 不願意實做 ActiveX. 所以如果你要讓 firefox 或新的 Goolge 瀏覽器 Chrome 上面寫 plugin, 你能用的技術是 NPAPI.

這份文件內容包含

       1. 如何選擇正確的方式, 撰寫 scriptable plugins

       2. 如何下載正確的 NPAPI 範例

       3. 如何在 Visual Studio .Net IDE 下, 編譯範例

       4. 如何測試你的 plugin

------------------------------------------------------------------

選擇正確的方式, 撰寫 scriptable plugins

我想你應該知道 Plugins 與 Extensions  是不一樣的, 你想知道 Firefox Plugin 的最新發展, 應該到

http://developer.mozilla.org/en/Plugins

你可以用 plugin 多媒體應用程式, 例如監控系統, 人物自動追蹤 等應用,  全部都可以利用 NPAPI 這個介面讓你的應用程式網頁化.

官方網頁裡面詳細的告訴你,  NPAPI plugins 可以利用 java script 進行操控, 而舊的技術 XPCOM和 LiveConnect 已經不適合用來開發 NPAPI plugins 了.

要讓 plugins 能被 script 操控, 你應該使用 npruntime

網址:http://developer.mozilla.org/en/Gecko_Plugin_API_Reference/Scripting_plugins

 

有圖有真相

寫程式也是一樣, 與其看一堆文件, 先給我一個能執行的範例. 再談後面的優秀架構與API 文件.

所以呢 ...

有程式還要能 work 才有真相! 你看看, 菜不就端上來了嗎 ....

 

我知道你在想什麼, 下面的範例支援 Firefox 3.0.

 

如何寫程式?

Step 1: 下載 Gecko_SDK: xurlrunner

網址: http://developer.mozilla.org/en/Gecko_SDK 
* 我下載的是 Gecko 1.9 (Firefox 3.0) 版本

Step 2: 下載範例程式

網址:  http://mxr.mozilla.org/seamonkey/source/modules/plugin/samples/

點選 npruntime 範例

每個檔案都有 Raw file 可以讓你下載, 把所有的檔案下載回去吧!

snap003

注意: 你會在 Samples and Test Cases 發現, 範例程式有兩個載點, 其中第二個mozilla/modules/plugin/tools/sdk/samples 裡面, scriptable 使用的是舊的技術 XPCOM, 請不要使用.  否則你編出來的 dll 在 Firefox 3.0 會無法執行.

Step 3: 建立一個簡單 Visual Studio 專案, 把剛剛抓到的程式放進去.

mozilla 官方網頁有教學: 你可以去看一下 (link)

下面是我寫的簡單修正中文版 (別擔心, 這些流程都很簡單)

----------------------------------------

1. 建立新的專案: project 名稱設定為 nprt 

VC 的操作:  New Project -> Vistual C++ -> Win32 Project  
  

2. Application Settings 選 DLL 並且設定為 Empty project

3. 把範例程式加入專案中 
  (a) 把從http://mxr.mozilla.org/seamonkey/source/modules/plugin/samples/ 
      下載回來的所有檔案 copy 到 nprt/nprt 目錄中 
  (b) 加入 nprt 專案中

 

4. 解開 xulrunner-sdk:  放在 C:\xulrunner-sdk 
網址:

http://developer.mozilla.org/en/docs/Gecko_SDK 
  

5. 設定 Include Path

     VC 的操作: C/C++ -> Additional Include Directories


    "C:\xulrunner-sdk\include";"C:\xulrunner-sdk\include\plugin";"C:\xulrunner-sdk\include\nspr";"C:\xulrunner-sdk\include\java"

 

6. 直接設定下面的定義 
     VC 的操作: C/C++ -> Preprocessor -> Preprocessor Definitions 
   WIN32;_WINDOWS;XP_WIN32;MOZILLA_STRICT_API;XPCOM_GLUE;XP_WIN;_X86_;NPSIMPLE_EXPORTS 
   _DEBUG 
   

7. 關掉 precompiled 選項 (如果你剛剛選的是 Empty Project, 則 precompiled 選項應該已經關閉) 
  VC 的操作: C/C++ -> Precompiled Headers -> Create/Use Precompiled Header: 設定為 Not Using Precompiled Headers

 

8. 設定 Module Definition File: nprt.def 
  VC 的操作: Linker -> Input -> Module Definition File:

 

9. 把 plugin.cpp 的 DrawText 改成 DrawTextA

10. 修改  plugin.cpp 裡面的 Invoke method 改成下面這樣,

否則當 firefox 呼叫你的 plugin 時, 會 當掉.

------------------------------------------------------------------

bool ScriptablePluginObject::Invoke(NPIdentifier name, const NPVariant *args, 
                               uint32_t argCount, NPVariant *result) { 
  if (name == sFoo_id) { 
    printf ("foo called!\n"); 
    MessageBox(NULL,L"foo 被呼叫 ",L"Java Script 呼叫範例",MB_OK); 
     
    return PR_TRUE; 
  }

  return PR_FALSE; 
}

------------------------------------------------------------------

11. 修改 npp_gate.cpp , 把 _GetJavaClass  拿掉

------------------------------------------------------------------

/*  加入註解 (感謝網友 Chui-Wen Chiu 提醒)

jref NPP_GetJavaClass (void) 
{ 
return NULL; 
}

*/

------------------------------------------------------------------

編譯應該會通過, 產生 nprt.dll

----------------------------------------

測試:

     Step 1: 把 nprt.dll 放到 firefox 的 plugins 目錄底下

     Step 2: 開啟 firefox 在網址輸入

                    about:plugins

                   看看你的 plugins 是否在裡面.

                   長相應該是這樣.

snap003

      Step 3: 執行 測試 test.html

       注意 1: 你下載的 test.html 已經嚴重過期了. 所以我的作法是自己寫一個

       test2.html

 

     

 

希望對你有幫助, Enjoy.

by Jing (井民全)

 

延伸參考資訊

[1] 主要 NPAPI API 參考文件

[2] Scripting Plugins 說明文件

[3] Gecko_SDK 下載地點

[4] 一堆 NPAPI 範例

firefox plugin示例程序 firefox plugin程序 编译SDK npruntime代码 立即下载

相关推荐

firefox插件开发,firefox plugin 开发 firefox 扩展 开发

这个文档是个人在开发100工具时总结出来的文档,部分内容摘自他人,只供学习

firefox插件(plugin)开发概述

firefox的插件分两种类型,一种extension,叫扩展,一种是plugin,我们叫插件.两种是完全不同的两个东西。extension相对来说简单很多,用的主要是XUL,只是xml的一个变相。而plugin相对来说复杂一些。具体的官网说明如下https://developer.mozilla.org/en/Gecko_Plugin_API_Reference 一、 插件的标准   1、在

2万+

LoRa正点原子模块组网步骤

按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE要等于1奥 第一步分析通讯协议: 点对点通讯是在透明传输的条件下,地址和信道都是一样的,直接发送接受数据。 组网呢我们利用是: 定向传输就是 A、B的地址、信道不同 假如A是要想B发送信息就用函数来下面: int b[5]...

weixin_43205178的博客 4082

火狐firefox插件plugin:

AdBlocker Ultimate GiteeTree Octotree - GitHub code tree User-Agent Switcher and Manager Video DownloadHelper 网页截图 沙拉查词-聚合词典划词翻译 Country Flags & IP Whois

火星男孩的分享空间 538

Docker安装Nacos(详细教程)

Docker安装Nacos的步骤相对直接,但需要注意一些细节以确保安装成功。

weixin_73060959的博客 1405

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 663

Firefox插件(plugins)开发实用指南

Firefox插件可实现强大功能,但其中麻烦事情不少。写这个实用指南首先是为了方便自己记忆,免得以后再次栽倒一些坑里面,如果能帮助其他人,则是更好。这个指南不是为了手把手教读者开发插件,而是作为一个FAQ,解决各种诡异问题 。 Firefox拥有众多的扩展(Extension),开发扩展也非常容易,不过有一些事情还是无法用扩展解决,需要访问操作系统的底层功能,这就需要写插件(plugins)。...

xiangxingchina 724

2023 年全国网络安全行业职业技能大赛-电子数据取证分析师-决赛WP_2023网络安全行业赛取证

数据库取证工具里面可以恢复删除掉的数据带红叉的就说删除过的,game库下面announcement_detail表里面update_time字段使用sql语句时间戳最大为1513243355转换时间为2017-12-14 17:22:35。

2401_89791684的博客 2092

FireFox插件开发说明与示例

火狐浏览器插件开发过程详细说明

willy16的专栏 4756

大话西游2经典单机版V8:一键架设+GM全功能+仙玉自由修改

本文详细介绍大话西游2经典单机版V8的一键架设教程和GM全功能使用指南,包括仙玉自由修改技巧。该版本无需虚拟机,解压即玩,完美还原官服经典玩法,支持离线运行,是老玩家重温经典和新玩家体验游戏的理想选择。

weixin_27303545的博客 1131

烧录代码显示:no st-link 和Targrt DLL has been cancelled,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1578

Firefox Plugin 开发

一、环境搭建 1、Gecko-SDK Firefox是Mozilla基金会主持的、支持多种主流平台的、和Netscape一脉相承的浏览器,内核名字叫Gecko。开发插件前,你首先应该到Mozilla Plugins去了解一下,那里是标准和权威的所在,既有文档,有又例子,关键的是还有一个开发插件必不可少的Gecko-SDK供你下载,这里我主要讨论Windows版的,Linux版的用GNU G

btkxql的专栏 839

6、 实时家禽健康识别与疾病检测系统的深入解析

本文深入解析了一种基于物联网的实时家禽健康识别与疾病检测系统,结合图像分析和音频分析技术,能够有效识别病鸡并防止疾病传播。文章详细介绍了系统的测试环境、数据采集与预处理方法、图像与音频分析流程,并对系统性能进行了全面评估。最后提出了未来改进方向,包括多模态融合、深度学习应用及实时性优化等。

weixin_28840811的博客 185

centos7 firefox 安装 java plugin方法

目标 centos7 下安装 firefox 利用 firefox 打开物理机 idrac 卡进行远程管理 安装 firefox yum install -y firefox 安装 icetea 软件 yum install -y icedtea-web.x86_64 icedtea-web-devel.noarch 下载 java 地址 解压 java tar xf jre-8u241-...

Terry Tsang 886

如何在 R 中使用 Gamma 分布(附示例)

在统计学中,伽马分布通常用于模拟与等待时间相关的概率。我们可以使用以下函数来处理 R 中的 gamma 分布:dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的密度函数值。 pgamma(q, shape, rate) – 找到具有特定形状和速率参数的伽马分布的累积密度函数值。 qgamma(p, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的逆累积密度函数值。 rgamma(n, shape, rate) – 生成 n 个随机

Mrrunsen的博客 4415

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

制作Firefox Plugin的几个注意点

制作FirefoxPlugin的几个注意点1) DLL文件必须以np开头(无大小写要求),最好遵循8.3格式(现在的firefox没有这个限制),比如说npnul32.dll。2) 在创建项目的时候,最好创建空的DLL项目,否则要手动删除它们,并修改VC的一些设置,比较麻烦,不推荐。项目的名字最好是用np打头,这样就免去修改生成n

燕青专栏 2033

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Firefox 进程plugin-container.exe

     好久之前就注意到任务管理器中一个很奇怪的进程:plugin-container.exe 。查看进程文件位置查看其路径,发现它存在于Firefox 目录之下。而它无缘无故地占用了40M的内存。        原来这是一个在Firefox 新版本中加入的一项新功 能:崩溃保护 。据官方介绍,它提供了对第三方插件的崩溃保护,防止浏览器在运行Flash等第三方插件时造成的假死状况。虽然功能是...

古月的专栏 545

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

[Plugin] 50字內建立Firefox plugin 安裝檔 xpi

  好! 我承認這份文章超過 50 個字, 可是如何建立 Firefox plugin 自動安裝檔的觀念實在很簡單, 所以我們就開始上菜了.如果你閱讀過[Plugin] 撰寫 firefox plugin 最簡單方法那你應該會想知道網路上, 那些傢伙是怎麼讓他的 plugins 自動地安裝的?我現在教你.Step 1: 先把你那一堆 dll (包含 np開頭的 dl

dolphin98629的专栏 1832

FireFox 安装 Mozilla ActiveX Plugin

引用  安全注意使用 ActiveX 可能会造成电脑安全问题,因此除非你在工作上有需要在有特別设计 (custom-designed) 的网站或內部网络 (intranet) 上,也就是說在控制环境里使用 ActiveX,否则你不应安装 ActiveX 插件。Mozilla 浏览器本身并不支持 ActiveX 控件 (ActiveX control),但是如果你在工作上有特別需要,你可

Welcom to zougangx's blog 6395

java plugin firefox_No Java plugin

Please ensure that you have downloaded Java from the official website. Also please ensure that you close Firefox completely when installing Java, as it may not install correctly if Firefox remains ope...

weixin_31115195的博客 152

firefox的plugin-container.exe进程如何关闭?

为什么要关闭container进程? 查看firefox所消耗的资源: ff本身: cpu一般是0-10%, 内存一般是400MB左右 plugin-container: cpu所占的比例很高, 可达70%左右, 特别是有flash的页面(因为它主要就是管flash等插件的进程). 内存一般是在100MB左右. 火狐的plugin-container.exe进程? 这是一个独立进程和单一进程的问题...

weixin_34007291的博客 547

java plugin firefox_Firefox 中使用 Java 插件

本文转自Firefox官方网站许多网页使用 Java 小程序 用于交互式内容,如在线游戏。Java 是一种编程语言,它可以运行在 Windows、Mac、Linux 及其他计算机系统。在 Firefox 运行 Java 小程序之前,您必须已经正确安装并启用了 Java 插件。Firefox 还需要包含于 Java 6 Update 10 或者更高版本里的新 Java 插件。测试 Java一些在线工...

weixin_32200329的博客 2446
上一篇: error C2065: CoInitializeEx' : undeclared identifier 解决方法
下一篇: Windows下的Firefox plugins开发的N个坑
beyondchx
博客等级 码龄19年 238粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值