原创 在firefox中自定義protocol

前面的例子(爲firefox添加新的protocol)雖然很詳細,但是形式過於古老,無法應用於新的firefox版本中。我對這個進行進一步的研究。有了定製about頁面的URL的經驗,我打算實現一種新的協議“research”,在地址欄中

原创 使用js-ctypes

譯註:在學習使用js-ctypes的過程中遇到困難,於是仔細的看了這篇文章並對我感覺重要的地方進行了翻譯,加之原文有些地方仍然會有改動。在看譯文的過

原创 Firefox附加組件開發者指南(一)——擴展簡介

https://developer.mozilla.org/En/Firefox_addons_developer_guide Chapter1: Introduction to extensions Chapter2: Technol

原创 firefox附加組件開發者指南(二)——開發擴展過程中使用的技術

在深入闡述之前,我們快速的介紹一下用來開發firefox擴展的技術。還有爲開發firefox必須瞭解的一些知識。 開發firefox擴展用到的技術 Firefox及其擴展都是基於當前網絡開發廣泛使用的技術。其結構與使用在網頁中的動態HTM

原创 firefox調試記錄7——打開與修改文件

按照網上其他人給出的方法,打開了firefox工程之後,設置好環境變量,自己就可以打開一些文件,下斷點,進行調試等。但是我一直沒有找到打開某個特定文件的方法,如下圖是firefox工程點擊右鍵時的選項: 不過可以添加現有項目,這樣可以把f

原创 使用WaveOut接口播放WAV文件

我需要在插件中實現一邊接收數據,一邊展示媒體文件的功能,因此從最簡單的音頻文件來開始研究,絕大多數API如:playSound等都是根據完整文件來播放音頻的,即便是內存模式也是需要將整個文件全部讀入一片內容,然後將內存指針傳遞給playS

原创 NPAPI插件開發詳細記錄:利用cmake生成插件工程

         在使用firebreath的過程中,逐漸瞭解cmake的,生成項目非常方便,曾經我提供過一個生成插件開發基本代碼的小工具,其中也有生成VS project的選項,現在我將其更新了,工具默

原创 NPAPI插件開發詳細記錄:插件運行流程分析

本文詳細分析插件的代碼是如何執行的,主要分析np_entry.cpp、npn_gate.cpp和npp_gate.cpp.希望能夠有所收穫。 在windows平臺下,插件就是一個dll,注意到這個dll的def文件內容是:LIBRARY

原创 NPAPI插件開發詳細記錄:實用功能——添加、識別私有屬性

據我所知,除了通用屬性如:id、class等,object標籤的屬性有type、data、width、height,embed標籤的屬性有type、src、width、height。而flashplaye

原创 firefox附加組件開發者指南(五)——創建一個firefox擴展(下)

開發實用的擴展:一個會話管理擴展 這一節,我們將會創建一個實用新特性的擴展:會話存儲API。這可以讓用戶在任何時刻保存和恢復會話快照(瀏覽器窗口狀態)。 第一階段:測試安裝 圖12展示了會話管理擴展的接口。在工具菜單下,會話存儲子菜單包含

原创 自行設計NPAPI開發框架

    經歷了一年有餘的插件開發,對插件的工作機制也比較熟悉了,在開發插件的過程中使用sdk中的np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及pluginbase.h這幾

原创 NPAPI插件開發詳細記錄:安裝包的製作

我們開發好的插件需要交給用戶使用的,我們自己在開發的過程中可能有各式各樣的方法來使插件可以運行,但是如果要交給用戶使用,我們總不至於讓用戶自己去寫註冊表,或者讓用戶將咱們的dll複製到plugins目錄下

原创 NPAPI插件開發詳細記錄:與JS交互

        插件主要用於HTML頁面中增強HTML頁面可以支持的資源類型,在HTML頁面中最重要的一個特性就是可以利用腳本語言來實現與用戶的交互,之前的文章也提及過相關的議題,不過在交流過程中還是發現

原创 NPAPI插件開發詳細記錄:腳本化接口

scriptable接口的實現,與屬性有關的函數爲HasProperty、GetProperty、SetProperty。在JS中設置屬性(以bar爲例)用plugin.bar=barvalue;來設置,

原创 NPAPI插件開發詳細記錄:實用功能(庫的使用及多線程)

有了前面的hello world的經驗,本文在其基礎上研究一些實用功能的實現。 庫的動態加載 Windows平臺下,可以動態的對dll進行加載,使用到的API主要有:LoadLibrary、GetProcAddress、FreeLibra