Here\'s a sample plugin to show what\'s involved.
Julian
This Code
(and the window form for About Box):
Produces this Plugin....
Julian
This Code
(and the window form for About Box):
Quote:\' ----------------------Ã¢â¬Æ
\' Hello World Plugin
\' ----------------------
Imports System.ComponentModel.Composition
Imports ComfortClient.Plugin.Framework
Imports System.Windows.Forms
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Drawing
<PartMetadata(\"ComfortClientPlugin\", \"1.0\"), Export()> _
Public Class HelloWorld_Plugin
\' Plugin Contracts Supported
Implements IClientPluginMain
Implements IClientPluginMainMenu
#Region \"Properties\"
\' Unique Identifier of the Plugin
Private ReadOnly Property GUID() As Guid Implements IClientPluginMain.Guid
Get
Return _GUID
End Get
End Property
Private _GUID As Guid
\' Name of the Plugin
Private ReadOnly Property ID() As String Implements IClientPluginMain.ID
Get
Return _ID
End Get
End Property
Private _ID As String
\' Plugin Image
Private ReadOnly Property Image() As Image Implements IClientPluginMain.Image
Get
Return _Image
End Get
End Property
Private _Image As Image
\' Host Reference
Private Property Host() As IClientPluginHost Implements IClientPluginMain.Host
Set(value As IClientPluginHost)
_Host = value
End Set
Get
Return _Host
End Get
End Property
Private _Host As IClientPluginHost
\' About Handler
ReadOnly Property AboutHandler() As System.EventHandler Implements IClientPluginMain.AboutHandler
Get
Return _AboutHandler
End Get
End Property
Private _AboutHandler As System.EventHandler
#End Region
#Region \"Methods\"
\' Plugin Instantiation
Public Sub New()
\' Mandatory Plugin Identification; GUID and ID
For Each Attr In Attribute.GetCustomAttributes(Me.GetType.Assembly)
If TypeOf Attr Is GuidAttribute Then
_GUID = New Guid(CType(Attr, GuidAttribute).Value)
ElseIf TypeOf Attr Is AssemblyTitleAttribute Then
_ID = CType(Attr, AssemblyTitleAttribute).Title
End If
Next
_Image = My.Resources.plugin
_AboutHandler = AddressOf About
End Sub
\' Before Plugin Initialises
Private Function BeforePluginInitialisation() As ReturnCode _
Implements IClientPluginMain.BeforePluginInitialisation
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' After Plugin Initialises
Private Function AfterPluginInitialisation() As ReturnCode _
Implements IClientPluginMain.AfterPluginInitialisation
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Plugin is disabled by the Client
Private Function PluginIsDisabled() As ReturnCode _
Implements IClientPluginMain.PluginIsDisabled
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Plugin is enabled by the Client
Private Function PluginIsEnabled() As ReturnCode _
Implements IClientPluginMain.PluginIsEnabled
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Adds thw About Box for the Plugin
Private Function About(ByVal sender As Object, ByVal e As System.EventArgs) _
As ReturnCode Implements IClientPluginMain.About
Dim AboutForm As New About()
Call AboutForm.ShowDialog()
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Adds the Plugin About Menu Item to the Main Menu
Private Function SetAboutMenu(ByRef MenuAbout As ToolStripMenuItem) _
As ReturnCode Implements IClientPluginMain.SetAboutMenu
\' Mandatory About Box
With MenuAbout
.Name = \"About\"
.Text = \"About\"
.Image = My.Resources.About
End With
AddHandler MenuAbout.Click, AddressOf About
\' Set Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Add Other Menu Item(s) to the Main Menu
Private Function SetMainMenu(ByRef PluginMenu As List(Of ToolStripItem)) _
As ReturnCode Implements IClientPluginMainMenu.SetMainMenu
\' Setup Menu Item
Dim HelloItem As New ToolStripMenuItem
With HelloItem
.Name = Me.ID & \"_Hello_World\"
.Text = \"Hello World!\"
.Image = My.Resources.World
End With
\' Add Menu Click Handler
AddHandler HelloItem.Click, AddressOf Hello
\' Add to the Menu List
PluginMenu.Add(HelloItem)
\' Set Success Returncode
Return New ReturnCode(ReturnCodeType.Internal, ReturnCodeValue.OK)
End Function
\' Payload
Private Sub Hello(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox(\"Hello World!\")
End Sub
#End Region
End Class
Produces this Plugin....

