製作Firefox Plugin的幾個注意點

來源:互聯網
上載者:User
製作
Firefox
Plugin的幾個注意點

1)
DLL檔案必須以
np開頭(無大小寫要求),最好遵循
8.3格式(現在的
firefox沒有這個限制),比如說
npnul32.dll。

2)

在建立項目的時候,最好建立空的
DLL項目,否則要手動刪除它們,並修改
VC的一些設定,比較麻煩,不推薦。項目的名字最好是用
np打頭,這樣就免去修改產生
np打頭的
DLL檔案的所有設定。

3)

編譯原始碼的時候,必須添加

 
MOZILLA_STRICT_API

 
XP_WIN

 
XP_WIN32

三個宏。

4)如果使用
*.def檔案定義介面函數,那麼在
LIBRARY項,庫名必須和最終的
DLL檔案名稱一致,比如說
NPNUL32。一般的格式如下:

LIBRARY  
NPNUL32

 

EXPORTS

           
NP_GetEntryPoints  
@1

           
NP_Initialize      
@2

           
NP_Shutdown        
@3

 

5)

資源檔的建立。

A)必須添加
MIMEType項,比如說:
VALUE
"MIMEType", "application/x-java-applet"。

B)最好添加
FileExtents項,比如說
VALUE
"FileExtents", "pdf"。

C)最好語言使用英文,如果中文的話,產生的
DLL很大。

D)
FILEFLAGSMASK項可以考慮都
enabled,以免不必要的麻煩,比如說
FILEFLAGSMASK
0x3fL

E)在資源檔中,不要使用
afxres.h,用
winresrc.h代替;否則有可能產生的
DLL
Firefox不認識。

下面是我做測試時候使用的一個
rc檔案(我手工改了標準
VC2005產生的
version檔案,裡面有些注釋我沒有改動,所以可能不正確,比如說“
Chinese (P.R.C.) resources”),請做參考。

// Microsoft Visual C++
generated resource script.

//

#include
"resource.h"

 

#define
APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the
TEXTINCLUDE 2 resource.

//

#include
"winresrc.h"

 

/////////////////////////////////////////////////////////////////////////////

#undef
APSTUDIO_READONLY_SYMBOLS

 

/////////////////////////////////////////////////////////////////////////////

// Chinese (P.R.C.) resources

 

#if
!defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH,
SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

 

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

 

1 TEXTINCLUDE

BEGIN

   
"resource.h/0"

END

 

2 TEXTINCLUDE

BEGIN

   
"#include
""winresrc.h""/r/n"

   
"/0"

END

 

3 TEXTINCLUDE

BEGIN

   
"/r/n"

   
"/0"

END

 

#endif   
// APSTUDIO_INVOKED

 

 

/////////////////////////////////////////////////////////////////////////////

//

// Version

//

 

VS_VERSION_INFO VERSIONINFO

 
FILEVERSION 1,0,0,1

 
PRODUCTVERSION 1,0,0,1

 
FILEFLAGSMASK 0x3fL

#ifdef _DEBUG

 
FILEFLAGS 0x1L

#else

 
FILEFLAGS 0x0L

#endif

 
FILEOS 0x40004L

 
FILETYPE 0x2L

 
FILESUBTYPE 0x0L

BEGIN

   
BLOCK "StringFileInfo"

   
BEGIN

       
BLOCK "040904e4"

       
BEGIN

           
VALUE
"FileDescription", "npwyq Dynamic Link Library"

           
VALUE "FileExtents",
"html|htm"

           
VALUE "FileOpenName",
"npwyq"

           
VALUE "FileVersion",
"1, 0, 0, 1"

           
VALUE "InternalName",
"npwyq"

           
VALUE "LegalCopyright",
"Copyright (C) 2009"

           
VALUE "MIMEType",
"application/x-wyq-plugin"

           
VALUE
"OriginalFilename", "npwyq.dll"

           
VALUE "ProductName",
" npwyq"

           
VALUE "ProductVersion",
"1, 0, 0, 1"

       
END

   
END

   
BLOCK "VarFileInfo"

   
BEGIN

       
VALUE "Translation", 0x409,
1252

   
END

END

 

#endif   
// Chinese (P.R.C.) resources

/////////////////////////////////////////////////////////////////////////////

 

 

 

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the
TEXTINCLUDE 3 resource.

//

 

 

/////////////////////////////////////////////////////////////////////////////

#endif   
// not APSTUDIO_INVOKED

 

6)在產生
DLL檔案後,將它拷貝到
firefox的
plugins目錄中去,如果有相關的
*.xpt檔案,請拷貝到
components中去。若此
DLL依賴於其他第三方的
DLL檔案,則要將他們拷貝到與
firefox.exe的同一級目錄中去。關閉所有的firefox瀏覽器,然後再次開啟。在地址欄中輸入about:plugins,檢查是否你的plugin已經註冊成功。

 

若對其中的其他細節感興趣,不妨參考:
https://developer.mozilla.org/en/Compiling_The_npruntime_Sample_Plugin_in_Visual_Studio

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.