2010-09-14 9 views
1

我寫了一個NPAPI插件,如果我把它的%ProgramFiles \ Mozilla Firefox的\插件,實例化和正常運行NPAPI插件。但是,因爲我想它與其他瀏覽器,以及,我更傾向於將在HKLM \ SOFTWARE \ MozillaPlugins \註冊它,如所描述here。所以在我安裝,我創建這些註冊表項:不能得到HKLM SOFTWARE MozillaPlugins 上市實例

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @ alanta.com/WinVncCtl]

「產品名稱」= 「WinVNC的NPAPI控制」

「路徑「=」 C:\ Program Files文件\ Alanta \ WinVncCtl.dll」

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @ alanta.com/WinVncCtl \ MIMETYPES]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @alanta。 COM/WinVncCtl \ MIMETYPES \應用程序/ x-alanta-VNC]

「說明」= 「Alanta的VNC服務器NPAPI插件」

,當然,我的安裝程序將在WinVncCtl.dll文件正確的地方。 (我也嘗試過重命名爲npWinVnc.dll,這個理論下,也許它需要開始與「NP」,沒有骰子。我也試過版本標籤,MIME類型等的不同組合)

我實例化它像這樣:

vncDiv.innerHTML = "<object id='vncServerControl' classid='@alanta.com/WinVncCtl' type='application/x-alanta-vnc' />"; 

但它似乎並沒有實例化的方式。但是,如上所述,如果我忽略對象標記中的classid,並將文件npWinVnc.dll放在我的插件目錄中,那麼生活就會很好。

什麼可能錯了我的方法來去有什麼想法?

回答

2

所以我一直沒能得到它的工作,該文檔說應該的方式。但這種特定組合似乎是成功的:

(1)文件名稱顯然已經開始與「NP」,所以我改名爲「npWinVnc.dll」,並調整了註冊表項正確:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @ alanta.com/WinVncCtl]

「產品名稱」= 「的WinVNC NPAPI控制」

「路徑」= 「C:\ Program Files文件\ Alanta \ npWinVnc.dll」

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @ alanta.com/WinVncCtl \ MIMETYPES]

[HKEY_LOCAL_MACHINE \ SOFTWARE \ MozillaPlugins \ @ alanta.com/WinVncCtl \ MIMETYPES \應用程序/ x-alanta-VNC]

「說明「=」 Alanta的VNC服務器NPAPI插件」

我知道,在plugins目錄中的文件需要用啓動‘NP’,但顯然這還需要直接登記到啓動文件‘NP’爲好。這似乎是一個棘手的(和無證件!)對我的要求,但顯然是這樣。 (2)如果您在<對象>標記中指定ClassId(即使您還指定了MIME類型),它似乎也不起作用,所以您只需指定一個MIME類型,如下所示:

vncDiv.innerHTML = "<object id='vncServerControl' type='application/x-alanta-vnc' />"; 

這個特定的組合讓它爲我工作。我更喜歡使用ClassID,因爲它會消除插件目錄中的DLL和安裝程序放置的DLL之間的歧義,但這並不重要。儘管如此,我仍然樂於接受爲什麼ClassId不起作用的建議。 (我試圖通過Mozilla源代碼查看,但決定我的時間可能會更好地用在nsObjectFrame.cpp的第1000行左右:-)

2

對於你在做什麼,你可能還想至少看看FireBreath的源代碼;這裏有很多很好的例子,框架非常棒(坦白地說,我自己寫的),但是它是開源的,你可以隨心所欲地使用它。

相關問題