利用Plugin技术开发插件

合集下载

idea插件开发方法

idea插件开发方法

idea插件开发方法第一步:编写插件的基本结构一个idea插件是一个独立的Java工程,我们需要创建一个新的项目来开始插件的开发。

在创建项目的过程中,我们需要选择Plugin 模板,并填写相关的项目信息。

创建完成后,我们就可以开始编写插件的基本结构了。

第二步:定义插件的功能在开发插件之前,我们需要明确插件的功能是什么。

通过分析我们的需求,确定插件需要实现的功能和功能的具体实现方式。

然后,我们可以在插件的代码中定义相关的类和方法,来实现这些功能。

第三步:处理插件的生命周期插件的生命周期包括插件的加载、激活和卸载等阶段。

在插件的代码中,我们可以通过实现相关的接口或者继承相关的类来处理插件的生命周期。

这样,我们可以在插件的不同阶段执行相应的操作,以实现插件的功能。

第四步:处理插件的扩展点idea提供了很多扩展点,我们可以利用这些扩展点来实现插件的功能。

在插件的代码中,我们可以通过注册扩展点来扩展idea的功能,或者通过监听扩展点的方式来处理idea的事件。

通过合理利用扩展点,我们可以实现插件和idea的深度集成。

第五步:测试和调试插件在插件开发的过程中,我们需要对插件进行测试和调试,以确保插件的功能正常。

可以通过在idea中运行插件的方式来进行测试,也可以通过idea提供的模拟环境进行调试。

在测试和调试的过程中,我们可以通过日志输出和断点调试等方式来定位和解决问题。

第六步:发布和分享插件当我们开发完成一个功能完善的插件后,可以考虑将插件发布和分享给其他开发者使用。

可以将插件上传到idea的插件市场,或者将插件的源代码分享到开源社区。

通过发布和分享插件,我们可以得到更多的反馈和贡献,也可以帮助其他开发者提高开发效率。

总结:通过以上几个步骤,我们可以完成一个idea插件的开发。

在开发插件的过程中,我们需要明确插件的功能,处理插件的生命周期和扩展点,测试和调试插件,最后发布和分享插件。

通过不断的实践和学习,我们可以开发出更加强大和实用的idea插件,提高开发效率和开发质量。

idea maven plugin使用方法

idea maven plugin使用方法

idea maven plugin使用方法### IDEA Maven Plugin使用指南IDEA(IntelliJ IDEA)作为一款流行的Java集成开发环境,内置了对Maven的强大支持。

Maven是一个项目管理和构建自动化工具,它能够帮助开发者自动化构建、测试、打包和部署项目。

IDEA中的Maven插件使得在IDE内部即可完成大部分Maven操作,提高了开发效率。

#### 一、安装与配置1.**确保IDEA已安装**:在安装IDEA时,通常默认已经集成了Maven 插件,如果没有,可以通过以下步骤进行安装:- 打开IDEA,进入"File" -> "Settings"(或"IntelliJ IDEA" -> "Preferences",具体取决于操作系统)。

- 在"Plugins"部分,搜索"Maven",并点击"Install"按钮安装。

2.**配置Maven环境**:- 在"Settings"或"Preferences"中找到"Maven"。

- 指定Maven的主目录(通常是Maven安装目录)和本地仓库位置。

- 配置Maven的设置文件`settings.xml`,通常位于Maven主目录的`conf`文件夹内。

#### 二、基本使用方法1.**创建Maven项目**:- 在IDEA中,选择"Create New Project",然后选择"Maven"作为项目类型。

- 根据需要选择项目原型(archetype),并填写项目坐标(如groupId、artifactId等)。

2.**解析依赖**:- 在项目的`pom.xml`文件中添加依赖后,IDEA会自动提示你解析依赖。

Eclipse-plugin插件开发

Eclipse-plugin插件开发

使用PDE开发插件--步骤8

点击“完成”,完成插件项目的新建。 因为所创建的项目与“插件开发”透视 图相关联,因此将可自动转到“插件开 发”透视图。
使用PDE开发插件--步骤


插件项目生成之后,项目中将会包含一个按默 认方式生成的插HelloWorldPluginPlugin.java文 件。 因为该项目是一个插件项目,所以点击Eclipse 菜单栏中的“运行”按钮旁的下拉箭号,并选 择“运行为”->“运行时工作台”。运行后, 将生成一个和当前Eclipse几乎完全一致的平台, 惟一的差别是在新的Eclipse平台上增加了一个 “Hello,Eclipse world”插件(见下图中的工具 条上的第5个按钮)。

点击“下一步”,显示“插件代码生成 器”窗口 (如下图)。


在“插件代码生成器”窗口中,可以选择 “创建空白插件项目”生成一个空插件,也 可选择“使用代码生成向导创建插件项目”。 为了说明插件结构,本例使用代码生成向导 创建插件项目,并选择“Hello, World”代码 生成向导。
使用PDE开发插件--步骤6



\plugins\org.eclipse.core.runtime_2.1.1\runtime. jar \plugins\org.eclipse.swt.win32_2.1.0\ws\win32\s wt.jar \plugins\org.eclipse.ui.workbench_2.1.0\workbe nch.jar 注意,随着Eclipse的版本不同,以上文件的路径 名可能会有所不同。
requires标签

requires标签中所列出的是需要的插件, 需要用到Eclipse工作台和SWT API,因 此导入了org.eclipse.ui插件。

ctkPlugin插件系统实现项目插件式开发

ctkPlugin插件系统实现项目插件式开发

ctkPlugin插件系统实现项⽬插件式开发插件式开发体会:⾃开始写【⼤话QT】系列就开始接触渲染客户端的开发,说是开发不如更多的说是维护以及重构,在接⼿这块的东西之前⾃⼰还有点犹豫,因为之前我⼀直认为客户端嘛,没什么技术含量,总是想做⽐较有挑战性的,为了这周总还专门找我谈了谈,算是“安抚”民⼼吧。

正式谈话过后,我才决定接⼿渲染客户端的开发。

渲染客户端的所有构成均是采⽤开源框架拼凑起来的整体,细分它的组成⼤致包含以下开源模块,简单描述:1> CTKPlugin插件系统框架。

负责整个项⽬的架构,决定了项⽬采⽤插件形式开发维护。

2> Google protocol buffer。

负责定义项⽬的通信协议,它是google内部使⽤的协议架构,最⼤的优点是:实现⾼效,向下兼容的通信协议。

3> Zeromq框架:负责项⽬中的⽹络通信,⽤于⾼性能⽹络编程。

4> ⽇志系统。

负责项⽬中所有⽇志的输出。

其中,最为关键的就是CTKPlugin插件系统,它决定了项⽬的整体架构——采⽤插件式开发。

经过这么多天的维护开发也深深的感受到这种插件式开发的⽅式带来的好处。

以前,总是从课本上读到所谓的理想的“热插拔”式的插件开发,⽽我总是不以为然,我的意识⾥⼀个项⽬的开发多多少少都是臃肿的,在使⽤了这种插件式的开发⽅式后,突然感觉软件的开发、维护、升级变得很容易,下⾯说⼀下我体会到的⼏点好处:1. 开发⼯作由之前的⼈等⼈变为并⾏开发。

项⽬中插件系统分为两⼤部分:基础插件与应⽤插件,基础插件即通⽤插件,在其它插件系统中都要使⽤到的,⽐如:⽇志插件在每个其它插件中都会被使⽤;⽽应⽤插件之间则是相互独⽴的,⽐如:登录插件、⽂件管理插件等。

基础插件⼀般是⼀些开源库,只需要我们编译出来使⽤即可,基本不需要我们⾃⾏开发;⽽应⽤插件功能的独⽴性决定了它们之间不会相互调⽤(业务整合插件除外),这样多个⼈员就可以独⽴开发,每个⼈负责⼀个独⽴的插件,项⽬进度会⼤⼤加快、周期缩短。

lombok-maven-plugin 用法-概述说明以及解释

lombok-maven-plugin 用法-概述说明以及解释

lombok-maven-plugin 用法-概述说明以及解释1.引言1.1 概述Lombok是一个Java库,通过自动生成Java代码中常见的样板代码,提供了更简洁、更易读的代码编写风格。

然而,在使用Lombok之前,我们需要在项目中集成Lombok库并进行相应的配置。

Lombok-maven-plugin就是一个能够与Maven构建工具集成的插件,它简化了Lombok库的引入和配置过程。

通过将Lombok-maven-plugin添加到项目的pom.xml文件中,我们可以轻松地通过Maven来管理和使用Lombok。

本文将介绍Lombok-maven-plugin的使用方法,并探讨其在开发中的优势和应用场景。

在深入了解Lombok-maven-plugin之前,让我们先来了解一下文章的结构和目的。

1.2 文章结构文章结构部分的内容如下:文章结构部分旨在介绍本文的整体结构和内容安排,帮助读者更好地理解和阅读本文。

本文按照以下结构进行组织:1. 引言:本部分介绍了本文的背景和目的,概述了lombok-maven-plugin的用途和重要性。

2. 正文:本部分是本文的主要内容,分为两个子节。

2.1 lombok-maven-plugin的介绍:本节详细介绍了lombok-maven-plugin的功能和特点,包括它的主要作用、所解决的问题、优势和局限性等方面。

2.2 lombok-maven-plugin的配置和使用方法:本节重点讲解了如何在Maven项目中配置和使用lombok-maven-plugin,包括安装和配置插件的步骤、常见的插件配置选项和使用示例等内容。

3. 结论:本部分对lombok-maven-plugin进行总结和展望。

3.1 总结lombok-maven-plugin的优势和应用场景:本节总结了lombok-maven-plugin的主要优点和适用场景,帮助读者了解为什么要选择使用该插件,并介绍了它的一些成功应用案例。

androidstudio plugins 的用法

androidstudio plugins 的用法

androidstudio plugins 的用法摘要:1.Android Studio 插件介绍2.插件的安装与使用3.常用插件推荐4.插件开发与自定义5.总结正文:Android Studio 是一款强大的Android 应用开发工具,为了提高开发效率,Android Studio 提供了丰富的插件。

本文将介绍Android Studio 插件的用法及相关知识。

1.Android Studio 插件介绍Android Studio 插件是基于IntelliJ IDEA 插件体系的一种扩展。

通过插件,开发者可以根据自己的需求,为Android Studio 添加新的功能和特性。

插件可以来自官方,也可以是第三方开发者提供的。

这些插件涵盖了代码调试、优化、开发工具等多个方面,帮助开发者更高效地完成项目。

2.插件的安装与使用安装插件的过程非常简单。

首先,打开Android Studio,点击菜单栏的"File",然后选择"Settings"。

在设置窗口中,选择左侧的"Plugins",接着点击右上角的"Marketplace" 按钮。

在搜索框中输入需要的插件名称,如"AndroidX",找到对应的插件后,点击"Install" 按钮进行安装。

安装完成后,重启Android Studio,新安装的插件即可使用。

使用插件的方法也相当便捷。

以AndroidX 插件为例,安装完成后,在编写代码时,只需将光标悬停在某个AndroidX 库的类名上,AndroidX 插件就会自动提示该库的相关信息,如依赖关系、权限等。

点击提示信息,还可以快速查看和编辑库的详细信息。

3.常用插件推荐以下是一些常用的Android Studio 插件,对于Android 开发者来说非常有帮助:- AndroidX:提供对AndroidX 库的快速查看和编辑功能。

Plugin 开发学习使用文档

Plugin 开发学习使用文档

InDesign Plugin开发学习文档Made By rubyInDesign 版本:Indesign CS2,CS3,CS4,CS5需要的SDK:CS2SDK,CS3SDK,CS4SDK,CS5SDK开发环境:CS2---VS2003CS3—--VS2005CS4—--VS2005CS5---VS2008开发语言:C++需要掌握技术:熟悉C++编程(推荐学习资料《C++Primer》)熟悉COM相关知识(推荐学习资料《COM技术内幕》)熟悉plugin开发(推荐学习资料—SDK中的相关Sample,SDK\docs\guides中的文档)何为Indesign plugin开发Indesign plugin开发就是为Indesign开发一个插件,这个插件可以实现自己想要的功能。

比如说我要让图片旋转40度后再放大十倍,这样我们就可以编写一个插件嵌入到Indesign中,只要运行这个插件就可以实现这样的功能。

Plugin文件及路径Plugin文件的后缀名是:.plnPlugin文件存放的路径:Indesign安装文件目录下的Plugin-Ins文件夹中,例如C:\Program Files\Adobe\Adobe InDesign CS3\Plug-Ins 这里需要提醒的是CS5的Plugin生成时有两个文件,一个是pln文件,另一个是Resources文件夹,这两个必须同时存在,否则CS5的Plugin是没有用的。

Plugin工程如何产生在SDK文档中有一个plugin工程的产生器,以CS3为例。

在这个文件夹中C:\Program Files\Adobe\Adobe InDesign CS3 ProductsSDK\devtools\sdktools\dollyxs有一个DollyXs.bat运行程序,双击这个就会产生plugin相关参数设置的界面,如下图Window下生成plugin相关参数的设置,如下图这里为什么要把Prj和src分开来呢,其实他们可以放在同一个文件夹里,这样分的好处就是为了方便不同版本,不同路径的SDK下载编译,因为配置Plugin工程是很麻烦的事情,很容易出错,所以前期做好分类,即使SDK在不同的盘,只要prj和src存放的文件夹路径正确,都不需要自己去配置,直接可以编译,方便又安全。

plugin framework for java 用法-概述说明以及解释

plugin framework for java 用法-概述说明以及解释

plugin framework for java 用法-概述说明以及解释1.引言1.1 概述插件框架是一种用于扩展软件功能的架构模式,它允许开发者通过添加插件来增加应用程序的功能和灵活性。

在Java中,插件框架是一种常见的应用开发模式,许多Java项目都使用插件框架来实现模块化和可扩展的设计。

插件框架的主要目标是降低开发复杂度,提高代码重用性,并加快应用程序开发的速度。

通过将应用程序的核心功能与可选择的插件分离开来,开发人员可以更容易地开发和维护代码。

同时,插件框架还提供了一种灵活的机制,使用户能够根据自己的需求定制和扩展应用程序的功能。

Java中的插件框架通常使用面向接口编程的方式实现。

开发者定义一组接口,规定了插件应该实现的功能和提供的服务。

然后,开发者可以编写各种插件实现这些接口,并通过插件管理器将它们加载到应用程序中。

插件管理器负责管理插件的生命周期,包括插件的加载、初始化、卸载等操作。

使用Java中的插件框架有许多优势。

首先,它可以有效地实现应用程序的模块化和解耦合,提高代码可维护性和可重用性。

其次,插件框架提供了一种动态扩展应用程序功能的方式,用户可以根据自己的需求选择性地加载和使用插件,从而提高了应用程序的灵活性和适应性。

此外,插件框架还为开发者提供了一个开放的平台,使他们能够专注于核心业务逻辑的开发,而不需要关注底层的插件管理细节。

综上所述,Java中的插件框架是一种重要的应用开发模式,它为开发者提供了一种灵活、模块化和可扩展的设计方法。

通过合理地利用插件框架,开发者可以快速构建高质量的应用程序,并满足用户需求的多样性与变化性。

文章结构部分的内容应该包括对整篇文章的框架和组织结构进行介绍。

在这部分,可以简要说明各个章节的主题和内容,以及它们的关系和逻辑顺序。

以下是一个可能的内容示例:1.2 文章结构本文主要介绍了Java中的插件框架的使用方法。

为了让读者全面了解插件框架的定义、作用、优势和应用场景,本文将按照以下结构进行组织:引言部分首先概述了本文的主题和目的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用Plug-in(NPAPI)技术扩展应用程序的Web应用摘要:讨论Plug-in的基本原理和开发方法,实现了一个H.263解码器的插件,并研究了如何把应用程序通过Plug-in技术嵌入浏览器中。

关键词:浏览器Netscape/Mozilla Plug-in 插件MIMEPlug-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-i n插件的内容与上一节中完整Plug-in插件的开发类似,但是并非必须实现其中的函数NPP_ StreamAsFile。

因为这种把应用程序嵌入浏览器的方法通常是直接操纵本地硬盘的文件,不需要通过浏览器接受服务器上的数据流。

3.2 应用程序的修改把独立应用程序直接嵌入到浏览器的实现方式如下。

(1)在Plug-in插件的函数NPP_SetWindow中必须把窗口句柄mhWnd传递给应用程序。

(2)应用程序在命令行参数中接收窗口句柄,或者应用程序采用侦听的方式等待Plug-in 插件传送过来的窗口句柄。

(3)应用程序在CreateWindow操作前设置自己的主窗口属性,例如在VC的程序中CM ainFrame∷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 scape Gecko Plug-in API Reference.http://devedge.ne /library/manuals/2002/plugin/1.0/,2002-10-052 刘毅.Plug-in结构应用程序设计.计算机应用,2002;22(4)3 沈慧杰.利用Plug-in技术增强浏览器/服务器功能.计算机应用,1998;18(11)。

相关文档
最新文档