Bringing .Net to ObjectDock
Published on December 24, 2004 By Littleboy In Docks

I'm looking for people to help me test .Net Support for ObjectDock.

What you will have to do is simply try to build a docklet using the sdk and send me suggestions & bug reports (or not, if you feel evil ). The more of the SDK you use, the better, of course, but building a simple docklet will work too.


Here is an explanation of the way I build it and how it works:

Last week, I started working on a way to build ObjectDock docklets in C#. Currently ObjectDock only allows you to build docklet using C/C++. As I have no access to ObjectDock internals, the only way to have docklets using managed code is to build a "proxy" docklet and call into managed code using COM.

The following picture shows the interaction between the different parts. When building a .Net Docklet, the only thing you have to care about is the docklet code itself (the Interop & helper dll are supplied and do not need to be modified).

The API is similar to the native SDK API. Each .Net Docklet has to implement the IDockletInterface interface (basically, the exportable functions from the native API). The native SDK functions are provided through the docklet class found in the DotNetSDK dll (the docklet handle & private data are encapsulated, so it's somewhat cleaner than the native API).

The interop docklet can be used in two different way: in standalone mode or in multi-docklet mode. In standalone mode, the programmer distributes the interop & helper dlls along with it's .Net docklet and set the interop to autoload it's plugin. It's completely transparent to the user. In multi-docklet mode, you only distribute the .net docklet part (users should have the "runtime") and users could choose from a selection of docklets the one to load.

If you want to help me test it, respond here and give your email adress or send me a mail at julien.templier at laposte dot net.

Merry Christmas everybody

Update: Beta 1 is available here: Link


Comments
on Dec 24, 2004
Wow. That's some Christmas present. Unfortunately, I really don't like ObjectDock or have any wish to use it at all, but I'm sure there will be others who do and will find your plugin support highly useful.

You should talk to Stardock and see if they'd be interested in including your plugin with the distribution (subject to it not breaking stuff ).
on Dec 24, 2004
That would be very interesting. Not sure if I can help really. Don't do C. Only tried VB many years ago. But I might be able to write C# test programs.
on Dec 24, 2004
Yay! Great stuff!
on Dec 24, 2004
I would be happy to help test it , in fact, i have been wanting to build out some
items to integrate with my companies .NET enable app - so this would be a great fit!

Let me know how I can get started.
on Dec 25, 2004
Wouldn't it also be possible to write VB# app then?
on Dec 26, 2004
Anybody interested, send me a mail at this adress : julien.templier at laposte dot net

thomassen> any language supported by the .Net runtime should work.
on Jan 23, 2005
0.9 Beta 1 (Build 28):
* Changed interface definition (see Documentation)
* AveDesk Compatibility
+ Drag & Drop helper functions
+ Ini file reader
+ Log to console
- Version showed incorrectly in the docklet selection dialog
- Stack corruption in selection dialog
on Dec 04, 2005
Littleboy, thanks so much for writing this! I'm a .Net Dev and I use ObjectDock at home and at work, gonna give the SDK a shot right now.

Any chance of a .Net 2.0 SDK?

VB#? You mean VB.Net? Yes VB.Net should tie into this Interop Docklet just as well as C#. It's all .Net so it all works.
on Jan 09, 2009
I see you posted a 2.0 version recently. Thanks! One quick question, the documentation mentions NetDockletHelper.dll but the zip file has ObjectDockSDK.dll. Is there a difference?
on Jan 09, 2009

No, I renamed it for the 2.0 version and forgot to update the documentation

Another thing that is gone in 2.0 is the autorun feature that allowed to bypass the docklet selection UI and always load the docklet specified in an ini file. I don't know if the documentation mentionned it as it was a little bit buggy and never worked the way I wanted.