Re: .Net Exodus plugins

Daniel Chandran <[email protected]> Thu, 15 Dec 2005 10:27:49 -0500
Newsgroups gmane.network.jabber.exodus.user
Message-ID <[email protected]>
Thanks for the example Joe.  I tested it out and works fine.

Here are the steps I went through, it's a revised list originally sent by
Prasad.

1. I use Visual Studio .NET 2003, so things like regasm happen automatically
with the correct project settings.
2. Create a project of type ClassLibrary. In your Project -> <yourproject>
Properties -> Configuration Properties, set "Register for Com Interop" to
true.
3. Add Exodus.cs base class to your project.
4. In Project -> Add Reference  Dialog box, add Exodus.exe as library in the
COM components.
5. Implement your class derived from Exodus.BasePlugin, and add your
override methods.
6. Build, and put you plugin.dll and Interop.ExodusCOM.dll in whatever
location you prefer.  As Joe. H suggestion for now don't put in the Exodus
plugins directory(??).
7. Manually modify your exodus.xml file and your progid to plugin_selected
section, and the path to your plugin dll in the plugin_files section.  If
you are try Joe's example  the progid will ClassLibrary2.Class.
8 Start Exodus, if you start a new chat you will see the IP addr put by the
plugin in your chat window.

Some questions.
1.  The example plugin works fine,  but it does not show up in the Options
-> Plugins section in Exodus.
2. What's the correct way to implment the IExodusChatPlugin?

Thanks,
Daniel G. Chandran

On 12/15/05, Joe Hildebrand <joe-bvCY4hpNeH/[email protected]> wrote:
>
> Sorry this took so long.
> Class1 is an example, and Exodus.cs has the base class.
>
>
>
>
> Again, don't put the .dll in the plugins directory for now.
>
> On Dec 9, 2005, at 11:15 AM, Daniel Chandran wrote:
>
> > Could Joe H. or somebody who is an expert an COM - .Net Interop
> > outline the exact steps to follow for Exodus to recognize the
> > plugins written in .NET?
> >
> > I am using Visual Studio, so it automatically does the regasm, and
> > I see the plugin listed in the registry under HKEY_CLASSES_ROOT\CLSID.
> >
> > VS generates two assemblies Interop.ExodusCOM.dll and MyPlugin.dll.
> > I put both of them in C:\Program Files\Exodus\Plugins.  Exodus does
> > not recognize my plugin.  I did a TlbExp on MyPlugin.dll.  After
> > that Exodus recogizes the MyPlugin,  but on attempting to load,
> > complains that it's not a valid Windows Image!!
> >
> > Any help is greatly appreciated.
> >
> > Thanks,
> > Daniel Chandran
> >
> > On 12/9/05, Durga Prasad <dprasad_114-/[email protected] > wrote:
> > hi,
> >
> > Thanks your very much for your reply.  Your information helps a lot
> > to develops plugins accurately for Windows environment.  I still
> > have doubts on custom plugin interaction  of Exodus.  I ll post it
> > in the near time.
> >
> > Would you send your .NET base class that will register
> > automatically to windows registry?
> >
> > thanks,
> > Durga Prasad T
> >
> >
> > [email protected] wrote: Send Exodus mailing list
> > submissions to
> > [email protected]
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> > http://mail.jabber.org/mailman/listinfo/exodus
> > or, via email, send a message with subject or body 'help' to
> > [email protected]
> >
> > You can reach the person managing the list at
> > [email protected]
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of Exodus digest..."
> > Today's Topics:
> >
> > 1. Re: Help in Exodus Plugin creation in C# (Joe Hildebrand)
> > From: Joe Hildebrand < joe-bvCY4hpNeH/[email protected]>
> > To: Discussion list for all things <[email protected]>
> > Date: Sun, 27 Nov 2005 17:13:07 -0700
> > Subject: Re: [Exodus] Help in Exodus Plugin creation in C#
> >
> > If you use the head of subversion, you'll find this a *lot* easier.
> > Here is the procedure:
> >
> > - Put your .dll anywhere. Eventually, if you put it in Exodus/
> > plugins/net or something, this will get more automated, but for the
> > moment it doesn't matter
> > - Make sure to call regasm on the .dll
> > - Put a registry value at HKCU\Software\Jabber\Exodus\Plugins whose
> > name is the progid of your control, and whose value is a string that
> > describes the plugin.
> > - If you don't have the head of SVN, edit your preference file, and
> > add your progid to the plugin_selected preference. It's a
> > stringList, so each item has an around it.
> > - If you *do* have the head of SVN, your plugin will just show up in
> > the list and can be selected.
> >
> > You'll no longer have to try to get the .TLB into the .dll, which is
> > nice. The downside is that you'll have to figure out (for the
> > moment) how to get your users to call regasm on your .dll to install
> > it. Eventually I'll figure out how to determine which CLR version
> > you compiled with, find the correct version of regasm, and run it
> > automatically.
> >
> > I've also got a .Net base class that does all of the registry stuff
> > automatically. I'll try to remember to post it when I'm back in the
> > office on Monday.
> >
> > On Nov 22, 2005, at 8:19 PM, Durga Prasad wrote:
> >
> > > hi All,
> > >
> > > I want to write a Plugin for Exodus Client using C#. For testing
> > > purpose, I wrote main class which implements IExodusPlugin
> > > interface that will add a Menu Item if the user clicks on a Roster
> > > name.
> > >
> > > The following is the structure of the Main Class ::
> > >
> > > using System;
> > > using System.Runtime.InteropServices;
> > >
> > > namespace ExodusPluginTesting
> > > {
> > > ///
> > > /// Summary description for Class1.
> > > ///
> > >
> > > [ Guid("E10C6CDE-8D8B-46c2-AE85-0185039E9958") ]
> > > [ClassInterface( ClassInterfaceType.AutoDual)]
> > > public class ExodusPluginTesting : Exodus.IExodusPlugin
> > > {
> > > public string ID = "";
> > > Exodus.ExodusController exodusController;
> > >
> > > public void Startup(Exodus.ExodusController exController)
> > > {
> > > string s = "This is my Plugin";
> > > exodusController =
> > > ( Exodus.ExodusController) exController;
> > > ID = exodusController.addContactMenu(s);
> > > }
> > >
> > > public void Shutdown()
> > > {
> > > exodusController.removeContactMenu(ID);
> > > exodusController = null;
> > > }
> > >
> > > public void Process(string xpath, string eventRaised,
> > > string xmlObject)
> > > {
> > > }
> > >
> > > public void NewChat(string jID, Exodus.ExodusChat exodusChat)
> > > {
> > > }
> > >
> > > public void NewRoom(string jID, Exodus.ExodusChat Room)
> > > {
> > > }
> > >
> > > public string NewIM(string jID, ref string body, ref
> > > string subject, string xTags)
> > > {
> > > string k = " " ;
> > > return (k);
> > > }
> > >
> > > public void Configure()
> > > {
> > > }
> > >
> > > public void MenuClick(string ID)
> > > {
> > > }
> > >
> > > public void MsgMenuClick(string ID,string jID, ref string
> > > body,ref string subject)
> > > {
> > > }
> > >
> > > public void NewOutgoingIM(string jID, Exodus.ExodusChat
> > > instantMSG)
> > > {
> > > }
> > > }
> > > }
> > >
> > >
> > > I converted "Exodus.tlb" to "Exodus.dll" using "tlbImp.exe" tool.
> > > And I included this 'Exodus.dll' in my code to import the
> > > "IExodusPlugin" interface structure into the Main Class
> > > (ExodusPluginTesting()).
> > > I built the solution (with Component Registry). THE OUTPUT files I
> > > got is "ExodusPluginTesting.dll" and "ExodusPluginTesting.tlb".
> > >
> > >
> > > Then I placed the 'ExodusPluginTesting.dll' file in "C:\Program
> > > Files\Exodus\Plugins" directory. I started Exodus client. But I
> > > didn't view the PLUGIN in the LIST. I tried several builds and
> > > placed it in PLUGINS directory, still, I didn't find it in the list.
> > >
> > >
> > > Is my Interface implementation correct or shall I need to declare
> > > the interface structure also (without using Exodus.dll).
> > >
> > > Can anybody help me in this aspect what procedure to follow to
> > > create .DLL Plugin for EXODUS.
> > >
> > >
> > >
> > > Thanks,
> > > Durga Prsad T
> > >
> > > Win a Yahoo! Vespa NEW - Yahoo! Cars has 3 Vespa LX125s to be won
> > > Enter Now!
> > > _______________________________________________
> > > Exodus mailing list
> > > [email protected]
> > > http://mail.jabber.org/mailman/listinfo/exodus
> >
> > _______________________________________________
> > Exodus mailing list
> > [email protected]
> > http://mail.jabber.org/mailman/listinfo/exodus
> >
> >
> > Yahoo! Messenger NEW - crystal clear PC to PC calling worldwide
> > with voicemail
> >
> >
> > _______________________________________________
> > Exodus mailing list
> > [email protected]
> > http://mail.jabber.org/mailman/listinfo/exodus
> >
> >
> >
> > _______________________________________________
> > Exodus mailing list
> > [email protected]
> > http://mail.jabber.org/mailman/listinfo/exodus
>
>
>
> _______________________________________________
> Exodus mailing list
> [email protected]
> http://mail.jabber.org/mailman/listinfo/exodus
>
>
>
>

_______________________________________________
Exodus mailing list
[email protected]
http://mail.jabber.org/mailman/listinfo/exodus