《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 利用Plug-in技術擴展應用程序的Web應用

利用Plug-in技術擴展應用程序的Web應用

2009-08-26
作者:趙黔莉

??? 摘? 要: 討論Plug-in的基本原理和開發方法,實現了一個H.263解碼器的插件,并研究了如何把應用程序通過Plug-in技術嵌入瀏覽器中。

  關鍵詞: 瀏覽器? Netscape/Mozilla? Plug-in? 插件? MIME

?

  Plug-in是擴展瀏覽器功能的一項重要技術。通過Plug-in技術,各種應用程序和集成軟件能夠以插件模型直接嵌入到網頁中,提供靈活的Web應用。但是對于一些大型的獨立應用程序很難將其改造成插件模型。本文主要介紹如何利用Plug-in技術把一個大型或單獨運行的應用程序嵌入到瀏覽器中。

1? Plug-in的開發結構

1.1 Plug-in的基本原理

  Plug-in是Netscape公司提出的一種瀏覽器插件技術。Plug-in插件的生存周期完全由網頁控制。具體控制過程如下。

  (1)當瀏覽器讀取HTML網頁時,若遇到MIME類型的標記時,它首先搜索是否有注冊該類型的Plug-in插件。

  (2)如果有,將該Plug-in插件的代碼載入內存。

  (3)瀏覽器初始化Plug-in的環境。

  (4)創建該Plug-in插件的實例,用于處理和顯示網頁中指定的數據流。

  (5)當該網頁關閉或轉到后臺時,瀏覽器銷毀該Plug-in插件的實例。

  (6)瀏覽器關閉前,退出Plug-in的環境。

  由如上過程可以看出,Plug-in在運行時完全作為瀏覽器的一部分。但是,由于Plug-in的編寫一般由第三方創建,所以Plug-in插件的開發必須遵循Netscape公司提出的標準規范。Plug-in技術的應用非常廣泛,一般瀏覽器中的多媒體顯示都是通過插件的方式由第三方提供的,如Flash等。

1.2 Plug-in的基本結構

  Plug-in雖然是一個獨立的模塊,但它是由Mozilla瀏覽器來調用的。本質上說,Plug-in接管了一個指定大小的顯示窗口,窗口的繪制和內容顯示則完全由Plug-in插件來控制。所以開發者可以將所提供的任何功能和應用放置在該窗口中。

  Netscape/Mozilla制訂了瀏覽器和Plug-in的標準通信過程,但是整個運行過程的核心是瀏覽器和Plug-in插件互操作過程,如圖1所示。

?

  圖中以NPP開頭的函數是在Plug-in中實現的由瀏覽器調用的接口,而以NPN開頭的函數是在瀏覽器中實現的由Plug-in調用的接口。這二類標準函數保證了瀏覽器和Plug-in能夠進行數據交換和操作。這些操作主要分為以下幾類。

  (1)窗口的內容繪制、顯示和事件處理。其中最主要的是函數NPP_SetWindow,它使瀏覽器指定了Plug-in插件所操縱的窗口顯示區域。

  (2)數據流的處理,用于瀏覽器和Plug-in之間的數據及文件內容的雙向傳遞,主要通過流的方式傳遞數據。

  (3)URL的處理,用于控制瀏覽器中超鏈的檢索、顯示和跳轉。

  (4)內存操作和其他相關信息。

  這些接口適用于Netscape4.0和最新的Mozilla瀏覽器版本。由于Plug-in程序必須以動態庫的形式由瀏覽器調用,因此針對不同的操作系統其實現方式也不同,但是其API的設計非常靈活。

2?完整Plug-in程序的開發

  根據Plug-in程序的基本原理和結構,可以針對特定的操作系統(Windows或Linux)開發相應的Plug-in程序。通常Plug-in插件的顯示是通過HTML網頁中的Embed或Object的標簽進行設置的。在瀏覽器對網頁進行顯示時,如遇到Embed或Object標簽,瀏覽器會根據指定的大小創建一個窗口句柄,并通過調用函數NPP_SetWindow把該窗口句柄傳遞給Plug-in插件。至于窗口內容的顯示和操作完全由Plug-in插件來控制和處理,而Plug-in所需要的數據或文件則通過Stream流進行通信。

  本文設計了一個獨立的Plug-in插件,其功能是播放一個H.263格式的圖像壓縮文件。顯示結構為。

  

  其核心部分是通過函數NPP_SetWindow傳遞窗口句柄并通過Stream流傳遞H.263的文件內容,然后設置Plug-in插件的回調函數,即窗口處理函數。針對本H.263插件的處理過程如下。

  (1)在函數NPP_SetWindow中,調用SubclassWindow(mhWnd,(WNDPROC)WinProc),使該窗口能夠截取窗口消息并繪制窗口。

  (2)通過函數NPP_StreamAsFile把網頁中URL指定的服務器上H.263文件內容保存為一個本地臨時文件并傳遞給Plug-in插件。當Plug-in偵聽到該臨時文件后,將H.263文件解壓為YUV內容,并顯示。

  (3)在回調函數WinProc中,處理該窗口中的WM_PAINT消息,最終完成YUV文件的顯示播放。

  本例中回調函數WinProc僅僅處理了最簡單的WM_PAINT消息。但是一個功能強大的Plug-in插件,可以實現更復雜的回調函數,使Plug-in窗口包含鍵盤、鼠標的操作和菜單、工具欄的功能等。例如在該Plug-in中可以加入播放、暫停、結束、循環等一般性操作,這些操作經過消息映射后都可以實現。

3?應用程序嵌入瀏覽器中

  一個完整的Plug-in插件可以根據需求實現各種應用。但是為了嵌入到瀏覽器中,這類程序不能很大、很復雜,其功能是有限的。在開發辦公自動化等應用集成的一類系統中,經常需要把某些獨立的程序和第三方軟件集成到B/S應用的系統中。如何把獨立的應用程序嵌入瀏覽器中顯得尤為重要。

  由于許多大型程序無法被改造為Plug-in的方式,因此,需要通過Plug-in技術為應用程序嵌入到瀏覽器中提供橋梁。通常一個應用程序是無法直接嵌入瀏覽器的網頁中,為此必須直接修改應用程序的源碼。本文研究了一個普通的Windows程序的修改和實現過程。

3.1 Plug-in的橋接

  因為Netscape/Mozilla之類的瀏覽器直接調用第三方程序時只能通過Plug-in的方式實現,所以必須事先完成一個Plug-in插件,用于橋接瀏覽器和應用程序之間的通信。該Plug-in插件的內容與上一節中完整Plug-in插件的開發類似,但是并非必須實現其中的函數NPP_StreamAsFile。因為這種把應用程序嵌入瀏覽器的方法通常是直接操縱本地硬盤的文件,不需要通過瀏覽器接受服務器上的數據流。

3.2 應用程序的修改

  把獨立應用程序直接嵌入到瀏覽器的實現方式如下。

  (1)在Plug-in插件的函數NPP_SetWindow中必須把窗口句柄mhWnd傳遞給應用程序。

  (2)應用程序在命令行參數中接收窗口句柄,或者應用程序采用偵聽的方式等待Plug-in插件傳送過來的窗口句柄。

  (3)應用程序在CreateWindow操作前設置自己的主窗口屬性,例如在VC的程序中CMainFrame∷PreCreateWindow設置的父窗口句柄就是Plug-in中傳來的mhWnd,并把自己窗口屬性設置為WS_CHILD以作為一個子窗口顯示在Plug-in窗口中。

  (4)設置窗口的回調函數,并指定該窗口所能接收的消息和操作。一般用程序自身的回調函數即可,不需要修改。

3.3 程序接口的輸出

  通過以上過程,即可把一個應用程序完全地嵌入瀏覽器中。但是在通常的辦公自動化應用中,還需要使該程序支持Script腳本的調用,例如支持JavaScript的調用是一種常見的需求和應用。為了使這種Plug-in插件支持Script腳本,Plug-in需要輸出一些額外的接口,簡要過程為:(1)給Plug-in的每個輸出接口分配一個UID號,可以用Windows下的uuidgen程序產生。(2)編寫接口的IDL文件。(3)在Plug-in程序中實現該接口的定義。

  由于在Plug-in程序中輸出的接口函數通常必須由應用程序自己來實現,所以如果應用程序要支持Script腳本的調用,就必須采用某種機制接收特定消息,如采用Socket的偵聽或組件模型來實現。

3.4 實際演示

  通過以上方式,一個應用程序可以嵌入到瀏覽器中,并且可以支持Script腳本的調用。圖2是利用Plug-in技術把一個YUV實時播放程序嵌入到Mozilla瀏覽器中。由圖2可以看出,一個獨立的應用程序可以作為網頁的一部分嵌入到瀏覽器中。這樣對基于B/S模式的辦公自動化系統,普通用戶完全可以在瀏覽器中直接完成所有的工作,如經過定制后的發文、收文、撰寫和視頻會議系統等。這樣不僅增強了這類集成系統的友好性和易用性,而且簡化了用戶的學習和使用過程,具有良好的應用需求。

?

4? 結? 論

  通過Plug-in方式能夠實現瀏覽器的各種增強功能。本文根據Plug-in開發模式,實現了一個多媒體播放的Plug-in插件,使得用戶能夠通過瀏覽器訪問并播放網上的H.263多媒體文件。本文還研究了如何把一個獨立的應用程序通過Plug-in技術嵌入到Mozilla瀏覽器中。這種技術大大豐富了瀏覽器的應用環境,對現有基于B/S模式的應用集成系統具有十分重要的使用價值。

?

參考文獻?

1?Netscape Communications.Netscape Gecko Plug-in?API Reference.http://devedge.netscape.com/library/?

manuals/2002/plugin/1.0/,2002-10-05?

2?劉毅.Plug-in結構應用程序設計.計算機應用,2002;22(4)?

3?沈慧杰.利用Plug-in技術增強瀏覽器/服務器功能.計算機應用,1998;18(11)?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲一区二区在线看| 99视频在线精品国自产拍免费观看| 久久成人免费| 国产欧美日韩综合精品二区| 快射av在线播放一区| 久久免费偷拍视频| 亚洲在线视频一区| 亚洲欧美中文在线视频| 亚洲免费在线电影| 欧美有码在线观看视频| 欧美日韩一区二区三区| 另类成人小视频在线| 欧美精品97| 国内精品伊人久久久久av一坑| 亚洲欧美清纯在线制服| 久久久精品午夜少妇| 亚洲欧美清纯在线制服| 国产精品人人做人人爽人人添| 欧美日韩国产精品一区| 国产精品国产三级国产aⅴ浪潮| 国产精品一区二区在线观看不卡| 另类激情亚洲| 99re6热在线精品视频播放速度| 国产亚洲欧美在线| 麻豆精品精华液| 美女任你摸久久| 一区二区三区国产| 欧美激情精品久久久久久免费印度| 黄色成人片子| 欧美成人免费全部| 亚洲久久成人| 欧美图区在线视频| 99精品欧美一区二区蜜桃免费| 国产午夜亚洲精品理论片色戒| 久久黄色网页| 欧美视频中文一区二区三区在线观看| 国产精品久久久久国产精品日日| 欧美激情视频在线免费观看 欧美视频免费一| 国产日韩欧美日韩大片| 欧美日韩一区在线播放| 久热综合在线亚洲精品| 久久米奇亚洲| 国产综合香蕉五月婷在线| 亚洲激情av| 欧美日韩小视频| 亚洲理论电影网| 欧美亚洲视频在线观看| 亚洲欧美日本视频在线观看| 欧美成人在线影院| 亚洲午夜久久久久久久久电影网| …久久精品99久久香蕉国产| 亚洲成人在线网| 日韩视频久久| 欧美在线观看网站| 久久免费国产精品| 国产婷婷色一区二区三区| 亚洲人成亚洲人成在线观看| 亚洲三级视频在线观看| 欧美日韩成人在线观看| 欧美日韩精品中文字幕| 亚洲人体影院| 国内精品免费在线观看| 91久久精品国产91性色tv| 免费在线一区二区| 欧美激情精品久久久久久免费印度| 久久免费高清视频| 亚洲国产视频一区二区| 亚洲欧美日韩爽爽影院| 老司机一区二区三区| 欧美视频精品在线观看| 亚洲最黄网站| 亚洲美洲欧洲综合国产一区| 欧美国产精品| 麻豆精品91| 蜜臀99久久精品久久久久久软件| 欧美香蕉大胸在线视频观看| 久久久久久亚洲精品不卡4k岛国| 亚洲国产专区校园欧美| 国产日韩欧美在线观看| 欧美在线亚洲综合一区| 欧美国产丝袜视频| 黄色小说综合网站| 亚洲免费久久| 亚洲第一精品电影| 麻豆九一精品爱看视频在线观看免费| 欧美性大战久久久久久久蜜臀| 亚洲人成网站在线观看播放| 欧美人成网站| 欧美日韩国产大片| 国产午夜精品久久久久久久| 一区二区高清| 亚洲欧美日韩一区二区三区在线观看| 欧美三级视频在线| 午夜久久电影网| 久久久久99| 亚洲尤物视频网| 亚洲性av在线| 亚洲无线视频| 欧美三区免费完整视频在线观看| 欧美日韩人人澡狠狠躁视频| 国内精品视频在线观看| 欧美激情亚洲自拍| 国产九九精品| 欧美日韩日本网| 亚洲欧美日本精品| 亚洲精品欧美精品| 国产亚洲欧洲| 久久不射中文字幕| 亚洲国产欧美一区二区三区久久| 国产精品嫩草99a| 国产精品婷婷午夜在线观看| 欧美日韩免费一区二区三区| 欧美日韩国语| 欧美激情一区二区三区全黄| 国产精品免费一区二区三区观看| av成人黄色| 久久夜精品va视频免费观看| 亚洲国产精品成人综合色在线婷婷| 免费永久网站黄欧美| 久热re这里精品视频在线6| 国产精品亚洲综合久久| 欧美午夜不卡在线观看免费| 国产精品卡一卡二| 欧美影院视频| 亚洲人精品午夜在线观看| 99在线热播精品免费99热| 欧美激情亚洲精品| 国产精品免费网站| 一二三四社区欧美黄| 欧美三日本三级少妇三99| 国产日韩精品在线| 亚洲福利在线观看| 91久久视频| 免费成人小视频| 黑人巨大精品欧美一区二区小视频| 在线观看一区欧美| 亚洲精品乱码久久久久久| 国产一级久久| 欧美一区二区三区在| 欧美日韩高清区| 国产三级欧美三级日产三级99| 国产日韩欧美在线观看| 欧美1区3d| 亚洲无线观看| 在线视频精品一区| 国产精品爽爽爽| 亚洲天堂久久| 亚洲天堂免费观看| 在线观看久久av| 亚洲精品一区在线观看| 狠狠做深爱婷婷久久综合一区| 欧美一区二区三区另类| 欧美日韩一区二区三| 美女精品自拍一二三四| 国产欧美日韩一区| 精品成人乱色一区二区| 免费成人性网站| 一区二区电影免费观看| 精品成人一区二区三区四区| 欧美jizzhd精品欧美喷水| 亚洲欧美日韩人成在线播放| 国产精品免费观看在线| 欧美伦理在线观看| 极品av少妇一区二区| 久久久爽爽爽美女图片| 日韩午夜电影av| 欧美成人精品在线| 国产日韩在线播放| 日韩网站在线观看| 国产一区二区三区不卡在线观看| 亚洲福利在线视频| 国产视频一区欧美| 国产一区av在线| 久久久久网址| 久久久久久一区| 国产亚洲成av人在线观看导航| 久久人人爽人人| 国产精品亚洲网站| 欧美在线三级| 免费看黄裸体一级大秀欧美| 亚洲丶国产丶欧美一区二区三区| 免费试看一区| 这里只有精品丝袜| 欧美色图一区二区三区| 亚洲午夜女主播在线直播| 亚洲一区二区三区高清不卡| 欧美精品久久久久久久久久| 亚洲精品123区| 国际精品欧美精品| 国内久久精品| 一本色道久久综合亚洲精品婷婷| 国产亚洲成精品久久| 亚洲性图久久| 亚洲夜晚福利在线观看| 国产网站欧美日韩免费精品在线观看| 亚洲一区日本| 国产欧美亚洲一区| 欧美日韩中文字幕精品| 一色屋精品亚洲香蕉网站| 一区二区三区四区五区精品视频| 欧美日韩三区四区| 亚洲欧美日韩综合| 欧美色另类天堂2015| 亚洲精品一线二线三线无人区| 久久亚洲图片| 农夫在线精品视频免费观看| 黄色影院成人| 亚洲另类在线一区| 在线视频观看日韩| 亚洲精品久久久一区二区三区| 国产精品美女一区二区在线观看| 亚洲精品少妇| 一本色道久久综合亚洲精品不| 黄色av一区| 亚洲全部视频| 国产精品久久久久久影院8一贰佰| 亚洲另类视频| 欧美日本亚洲韩国国产| 国产一区二区三区在线观看网站| 欧美日韩国产在线一区| 久久国产成人| 国模私拍一区二区三区| 欧美精品观看| 亚洲综合视频网| 国产欧美一区二区精品仙草咪| 亚久久调教视频| 麻豆精品视频在线观看视频| 欧美日本亚洲韩国国产| 国内成人在线| 国内不卡一区二区三区| 在线高清一区| 亚洲永久视频| 91久久中文字幕| 午夜精品国产精品大乳美女| 久久久国产精品亚洲一区| 国产精品亚洲不卡a| 欧美日韩99| 久久爱www久久做| 久久精品国产一区二区三区| 亚洲欧美日韩精品一区二区| 欧美亚洲一区二区三区| 欧美性片在线观看| 欧美一区二区高清| 欧美精品在线播放| 亚洲精品网站在线播放gif| 久久99伊人| 欧美国产在线视频| 久久久999| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品三级| 亚洲电影av| 国产精品成人一区二区三区夜夜夜| 亚洲影院免费观看| 欧美jjzz| 香蕉乱码成人久久天堂爱免费| 欧美高清视频一区| 欧美aⅴ99久久黑人专区| 亚洲欧美日韩精品久久奇米色影视| 亚洲美女av电影| 亚洲综合国产精品| 欧美片第1页综合| 亚洲一区bb| 亚洲美女视频在线免费观看| 亚洲一二三四久久| 美玉足脚交一区二区三区图片| 欧美综合第一页| 亚洲无毛电影| 亚洲一区二区三区精品在线观看| 久久久噜噜噜久噜久久| 免费看的黄色欧美网站| 尤物九九久久国产精品的分类| 欧美成人中文字幕在线| 在线观看国产精品网站| 国产精品电影在线观看| 久久久久免费视频| 1024国产精品| 欧美国产日韩一区二区| 欧美国产日韩一区二区| 久久久噜噜噜久久| 久久久久国产精品一区二区| 国产精品婷婷午夜在线观看| 欧美日韩视频一区二区| 日韩一区二区高清| 久久久久国产一区二区三区| 久久蜜桃资源一区二区老牛| 在线看一区二区| 最新国产の精品合集bt伙计| 亚洲主播在线| 国产情侣久久| 麻豆精品在线观看| 国产精品色婷婷久久58| 在线看日韩av| 亚洲美女诱惑| 国产精品99久久久久久久vr| 最新亚洲电影| 久久久亚洲影院你懂的| 欧美精品 国产精品| 一区视频在线播放| 欧美视频在线一区| 亚洲欧美福利一区二区| 久久一区二区三区超碰国产精品| 国产综合久久久久影院| 99国产欧美久久久精品| 欧美日韩中文字幕综合视频| 在线观看精品视频| 伊人狠狠色j香婷婷综合| 伊人成人在线视频| 99精品国产在热久久| 亚洲综合精品一区二区| 久久精品国产精品亚洲| 欧美日韩免费| 久久久久国产精品一区二区| 免费中文字幕日韩欧美| 亚洲精品欧洲精品| 精品96久久久久久中文字幕无| 久久精品欧美日韩| 香港久久久电影| 欧美韩日视频| 亚洲第一在线综合网站| 永久免费视频成人| 亚洲毛片在线免费观看| 欧美日韩高清在线播放| 一卡二卡3卡四卡高清精品视频| 国产精一区二区三区| 久久成人精品| 亚洲男人第一网站| 欧美成人精品高清在线播放| 欧美日韩一卡|