求使软件支持插件或应用功能的思路
看到很多知名的软件都有插件或应用功能,知道这是对软件的一种扩展.
但不知道其工作原理,软件与插件(应用)是如何对接,协调工作的.
麻烦做过或了解的高手们讲解一下,谢谢.!
[解决办法]
这个啊,有点麻烦的,我大概地说一点顺序吧,你可以网上去搜索的
第一步,用VB做一个activeX工程,生成dll文档。
当然,在做这个文档时要把接口以及功能自己搞明白。
第二步,在系统中注册这个dll
第三步,在其它程序(比如ASP)中定义并引用这个dll(就是调用上面的接口)。这样就可以在其它程序中实现原本无法实现的功能。
[解决办法]
你可以考虑用 COM 接口和 API,
但无论那种接口,都需要一个固定的模型,如:
Public Sub ShowWindow()
MainWindow.Show
End Sub
Public Sub CloseWindow()
Unload MainWindow
Set MainWindow = Nothing
End Sub
Public Property Get Icon() As StdPicture
Set Icon = MainWindow.Icon
End Property
Public Property Get Caption() As String
Caption = MainWindow.Caption
End Property
Public Property Get hWnd() As Long
hWnd = MainWindow.hWnd
End Property
Public Sub DelClick()
MainWindow.删除操作
End Sub
Public Sub PlasterClick()
MainWindow.粘贴操作
End Sub
Public Sub CopyClick()
MainWindow.复制操作
End Sub
Public Sub CutClick()
MainWindow.剪切操作
End Sub
Public Sub PrinterClick()
MainWindow.打印操作
End Sub
Public Property Get isDel() As Boolean
isDel = True
End Property
Public Property Get isPlaster() As Boolean
isPlaster = True
End Property
Public Property Get isCopy() As Boolean
isCopy = True
End Property
Public Property Get isCut() As Boolean
isCut = True
End Property
Public Property Get isPrinter() As Boolean
isPrinter = True
End Property
Public Property Get isPrintSetup() As Boolean
isPrintSetup = False
End Property
Public Property Let ParenthWnd(ByVal vData As Long)
ParentWindow = vData
End Property
Public Property Get ParenthWnd() As Long
ParenthWnd = ParentWindow
End Property
Public Property Let ConnectionString(ByVal vData As String)
ConnectionSQL = vData
End Property
Public Property Get ConnectionString() As String
ConnectionString = ConnectionSQL
End Property
Private Sub Class_Initialize()
Set MainWindow = MainForm
End Sub
这样,你的主程序只需要知道你的COM组件注册名称,就可以通过CreateObject动态创建出组件,然后根据定义模型的属性和方法动态的使用不同的组件了。
当然,API形式的接口也可以这么弄,只不过用起来复杂点,有情趣你可以产靠我的CSDN博客,里面有相关的文章介绍动态调用API的方法,改一下就可以用了。
还有,即使是API,也要预先定义相关的函数和参数使用方法,原理就和COM差不多的。
[解决办法]
看了楼上二位的意见,学习了不少。
我的方法是:
自己的程序全类化,并实现某个接口。
插件只需要引用这个接口,就可以得到我程序的所有开放的对象,对象的属性,对象的事件。
他就可以相应的实现他所需要实现的功能。
比如删除事件,那你可以在删除前,或删除后做一些其他的事。
整个模型参照OFFICE设计,已完成DEMO。
欢迎交流。