本文經過多圖組合,詳細引導初學者開發NPAPI的瀏覽器插件。瀏覽器
如需測試開發完成的插件請參考http://mozilla.com.cn/kb/dev/A.88/bash
1. 準備工做app
開發工具函數
本例使用的是visual studio 2008 英文版,下圖是關於信息工具
Windows SDKoop
本例使用Windows7操做系統 這裏下載SDK開發工具
NPAPISDK測試
本例使用的是Firefox4.0.1提供的SDK。
首先,從這裏下載mozilla源碼。而後,解壓firefox-4.0.1.source.tar.bz2文件。
將 \firefox-4.0.1.source\mozilla-2.0\modules\plugin 目錄解壓縮出來,裏面有咱們開發NPAPI插件所需的全部資源。
爲了方便你們使用,--這裏--提供plugin.rar的下載。
本例將plugin目標解壓到D:\code\下(後面統一使用絕對路徑,以免異意)
2. 建立Plugin
本着「有圖有真相」的原則,下面將連續多圖並配文字一步步建立、調試Plugin。圖中畫紅圈的表明須要填寫或者須要選擇的地方。
建立項目
Name項必定要以np開頭,爲了未來適應不一樣操做系統,最好全小寫,不要太長,儘可能控制在8字符內。
本例定義爲npdemo
Location項定義到plugin\sdk\samples以便項目屬性中用相對路徑引用NPAPI的SDK
本例定義爲d:\code\plugin\sdk\samples
添加文件
編輯npdemo.def爲
1
2
3
4
5
6
|
LIBRARY
"npdemo"
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
|
在圖中的BLOCK中添加。注意!BLOCK 必定要是"040904e4"
VALUE "MIMEType", "application/demo-plugin"
這裏順便說一下,MIMEType是plugin的惟一標示,須要本身定義
一般的格式是"application/「+ [plugin name]
本例中定義爲"application/demo-plugin"
修改Plugin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#pragma once
#include "pluginbase.h"
class
CPlugin :
public
nsPluginInstanceBase
{
private
:
NPP m_pNPInstance;
NPBool m_bInitialized;
public
:
CPlugin(NPP pNPInstance);
~CPlugin();
NPBool init(NPWindow* pNPWindow) { m_bInitialized = TRUE;
return
TRUE;}
void
shut() { m_bInitialized = FALSE; }
NPBool isInitialized() {
return
m_bInitialized; }
};
|
修改Plugin.cpp
其中實現了4個全局函數
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
|
#include "plugin.h"
////// functions /////////
NPError NS_PluginInitialize()
{
return
NPERR_NO_ERROR;
}
void
NS_PluginShutdown()
{
}
nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
{
if
(!aCreateDataStruct)
return
NULL;
CPlugin * plugin =
new
CPlugin(aCreateDataStruct->instance);
return
plugin;
}
void
NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
{
if
(aPlugin)
delete
(CPlugin *)aPlugin;
}
////// CPlugin /////////
CPlugin::CPlugin(NPP pNPInstance) : nsPluginInstanceBase(),
m_pNPInstance(pNPInstance),
m_bInitialized(FALSE)
{
}
CPlugin::~CPlugin()
{
}
|
修改項目屬性
如今能夠編譯了!
三、註冊、測試
本例編譯後,在D:\code\plugin\sdk\samples\npdemo\Debug生成npdemo.dll
打開註冊表,在HKEY_CURRENT_USER\SOFTWARE\MozillaPlugins下新建子項@mozilla.com.cn/demo
並新建字符串數據「Path」設值爲D:\code\plugin\sdk\samples\npdemo\Debug\npdemo.dll
打開火狐瀏覽器 在地址欄輸入「about:plugins」 若是在plugin列表中有本例的npdemo.dll及說明咱們的plugin示例已經成功完成
簡單的測試頁面:
1
2
3
4
5
6
7
|
<
HTML
>
<
HEAD
>
</
HEAD
>
<
BODY
>
<
embed
type
=
"application/demo-plugin"
>
</
BODY
>
</
HTML
>
|
特別注意
若是在實際部署中使用安裝文件安裝plugin,並用註冊表的方式註冊。那麼就不須要重啓火狐,只要在頁面中執行 navigator.plugins.refresh(false); 而後刷新頁面便可使用剛安裝的plugin
jiaofeng601, +479
9人支持,來自 Meteor、豬爪、hanyuxinting更多
本文經過多圖組合,詳細引導初學者開發NPAPI的瀏覽器插件。
如需測試開發完成的插件請參考http://mozilla.com.cn/kb/dev/A.88/
1. 準備工做
開發工具
本例使用的是visual studio 2008 英文版,下圖是關於信息
Windows SDK
本例使用Windows7操做系統 這裏下載SDK
NPAPISDK
本例使用的是Firefox4.0.1提供的SDK。
首先,從這裏下載mozilla源碼。而後,解壓firefox-4.0.1.source.tar.bz2文件。
將 \firefox-4.0.1.source\mozilla-2.0\modules\plugin 目錄解壓縮出來,裏面有咱們開發NPAPI插件所需的全部資源。
爲了方便你們使用,--這裏--提供plugin.rar的下載。
本例將plugin目標解壓到D:\code\下(後面統一使用絕對路徑,以免異意)
2. 建立Plugin
本着「有圖有真相」的原則,下面將連續多圖並配文字一步步建立、調試Plugin。圖中畫紅圈的表明須要填寫或者須要選擇的地方。
建立項目
Name項必定要以np開頭,爲了未來適應不一樣操做系統,最好全小寫,不要太長,儘可能控制在8字符內。
本例定義爲npdemo
Location項定義到plugin\sdk\samples以便項目屬性中用相對路徑引用NPAPI的SDK
本例定義爲d:\code\plugin\sdk\samples
添加文件
編輯npdemo.def爲
1
2
3
4
5
6
|
LIBRARY
"npdemo"
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
|
在圖中的BLOCK中添加。注意!BLOCK 必定要是"040904e4"
VALUE "MIMEType", "application/demo-plugin"
這裏順便說一下,MIMEType是plugin的惟一標示,須要本身定義
一般的格式是"application/「+ [plugin name]
本例中定義爲"application/demo-plugin"
修改Plugin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#pragma once
#include "pluginbase.h"
class
CPlugin :
public
nsPluginInstanceBase
{
private
:
NPP m_pNPInstance;
NPBool m_bInitialized;
public
:
CPlugin(NPP pNPInstance);
~CPlugin();
NPBool init(NPWindow* pNPWindow) { m_bInitialized = TRUE;
return
TRUE;}
void
shut() { m_bInitialized = FALSE; }
NPBool isInitialized() {
return
m_bInitialized; }
};
|
修改Plugin.cpp
其中實現了4個全局函數
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
|
#include "plugin.h"
////// functions /////////
NPError NS_PluginInitialize()
{
return
NPERR_NO_ERROR;
}
void
NS_PluginShutdown()
{
}
nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
{
if
(!aCreateDataStruct)
return
NULL;
CPlugin * plugin =
new
CPlugin(aCreateDataStruct->instance);
return
plugin;
}
void
NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
{
if
(aPlugin)
delete
(CPlugin *)aPlugin;
}
////// CPlugin /////////
CPlugin::CPlugin(NPP pNPInstance) : nsPluginInstanceBase(),
m_pNPInstance(pNPInstance),
m_bInitialized(FALSE)
{
}
CPlugin::~CPlugin()
{
}
|
修改項目屬性
如今能夠編譯了!
三、註冊、測試
本例編譯後,在D:\code\plugin\sdk\samples\npdemo\Debug生成npdemo.dll
打開註冊表,在HKEY_CURRENT_USER\SOFTWARE\MozillaPlugins下新建子項@mozilla.com.cn/demo
並新建字符串數據「Path」設值爲D:\code\plugin\sdk\samples\npdemo\Debug\npdemo.dll
打開火狐瀏覽器 在地址欄輸入「about:plugins」 若是在plugin列表中有本例的npdemo.dll及說明咱們的plugin示例已經成功完成
簡單的測試頁面:
1
2
3
4
5
6
7
|
<
HTML
>
<
HEAD
>
</
HEAD
>
<
BODY
>
<
embed
type
=
"application/demo-plugin"
>
</
BODY
>
</
HTML
>
|
特別注意
若是在實際部署中使用安裝文件安裝plugin,並用註冊表的方式註冊。那麼就不須要重啓火狐,只要在頁面中執行 navigator.plugins.refresh(false); 而後刷新頁面便可使用剛安裝的plugin
本文經過多圖組合,詳細引導初學者開發NPAPI的瀏覽器插件。
如需測試開發完成的插件請參考http://mozilla.com.cn/kb/dev/A.88/
1. 準備工做
開發工具
本例使用的是visual studio 2008 英文版,下圖是關於信息
Windows SDK
本例使用Windows7操做系統 這裏下載SDK
NPAPISDK
本例使用的是Firefox4.0.1提供的SDK。
首先,從這裏下載mozilla源碼。而後,解壓firefox-4.0.1.source.tar.bz2文件。
將 \firefox-4.0.1.source\mozilla-2.0\modules\plugin 目錄解壓縮出來,裏面有咱們開發NPAPI插件所需的全部資源。
爲了方便你們使用,--這裏--提供plugin.rar的下載。
本例將plugin目標解壓到D:\code\下(後面統一使用絕對路徑,以免異意)
2. 建立Plugin
本着「有圖有真相」的原則,下面將連續多圖並配文字一步步建立、調試Plugin。圖中畫紅圈的表明須要填寫或者須要選擇的地方。
建立項目
Name項必定要以np開頭,爲了未來適應不一樣操做系統,最好全小寫,不要太長,儘可能控制在8字符內。
本例定義爲npdemo
Location項定義到plugin\sdk\samples以便項目屬性中用相對路徑引用NPAPI的SDK
本例定義爲d:\code\plugin\sdk\samples
添加文件
編輯npdemo.def爲
1
2
3
4
5
6
|
LIBRARY
"npdemo"
EXPORTS
NP_GetEntryPoints @1
NP_Initialize @2
NP_Shutdown @3
|
在圖中的BLOCK中添加。注意!BLOCK 必定要是"040904e4"
VALUE "MIMEType", "application/demo-plugin"
這裏順便說一下,MIMEType是plugin的惟一標示,須要本身定義
一般的格式是"application/「+ [plugin name]
本例中定義爲"application/demo-plugin"
修改Plugin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#pragma once
#include "pluginbase.h"
class
CPlugin :
public
nsPluginInstanceBase
{
private
:
NPP m_pNPInstance;
NPBool m_bInitialized;
public
:
CPlugin(NPP pNPInstance);
~CPlugin();
NPBool init(NPWindow* pNPWindow) { m_bInitialized = TRUE;
return
TRUE;}
void
shut() { m_bInitialized = FALSE; }
NPBool isInitialized() {
return
m_bInitialized; }
};
|
修改Plugin.cpp
其中實現了4個全局函數
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
|
#include "plugin.h"
////// functions /////////
NPError NS_PluginInitialize()
{
return
NPERR_NO_ERROR;
}
void
NS_PluginShutdown()
{
}
nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
{
if
(!aCreateDataStruct)
return
NULL;
CPlugin * plugin =
new
CPlugin(aCreateDataStruct->instance);
return
plugin;
}
void
NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
{
if
(aPlugin)
delete
(CPlugin *)aPlugin;
}
////// CPlugin /////////
CPlugin::CPlugin(NPP pNPInstance) : nsPluginInstanceBase(),
m_pNPInstance(pNPInstance),
m_bInitialized(FALSE)
{
}
CPlugin::~CPlugin()
{
}
|
修改項目屬性
如今能夠編譯了!
三、註冊、測試
本例編譯後,在D:\code\plugin\sdk\samples\npdemo\Debug生成npdemo.dll
打開註冊表,在HKEY_CURRENT_USER\SOFTWARE\MozillaPlugins下新建子項@mozilla.com.cn/demo
並新建字符串數據「Path」設值爲D:\code\plugin\sdk\samples\npdemo\Debug\npdemo.dll
打開火狐瀏覽器 在地址欄輸入「about:plugins」 若是在plugin列表中有本例的npdemo.dll及說明咱們的plugin示例已經成功完成
簡單的測試頁面:
1
2
3
4
5
6
7
|
<
HTML
>
<
HEAD
>
</
HEAD
>
<
BODY
>
<
embed
type
=
"application/demo-plugin"
>
</
BODY
>
</
HTML
>
|
特別注意
若是在實際部署中使用安裝文件安裝plugin,並用註冊表的方式註冊。那麼就不須要重啓火狐,只要在頁面中執行 navigator.plugins.refresh(false); 而後刷新頁面便可使用剛安裝的plugin