If you are going to write a plugin supporting the JPS then you are going to need to support the functions listed at the beginning of this post (page 1).
The main ones are:
Juke_GetPluginInfo
Juke_Initialize
Juke_Shutdown
Juke_Configure
Juke_Command
When my jukebox software (written in VB6) starts, it looks into my "plugin" directory to see if any plug files exist in there. If there are files existing then I loop through each plugin file and determine whether the above routines exist or not. IF they do not then I do not consider it a valid plugin file. If the routines do exist, then I call the "Juke_Initialize" routine in the plugin so it can perform any init stuff it needs to and I also call the "Juke_GetPluginInfo" routine to get the plugin name, author, etc... information (which I display inside my software).
I store all of the "valid" plugins in an array. Whenever I need to send a command to a plugin then I simply loop through my "valid" plugin array and send the command to each plugin by calling the "Juke_Command" routine in the plugin.
Hope this helps some ...... "headkaze" wrote most of the VB6 class module logic which I am using since I had no experience with plugins before implementing all of this JPS stuff. He is the main guy who might be able to explain the lower level detail stuff if you have more specific questions. Basically, "headkaze" figured out how a VB6 application can send stuff to a plugin DLL file and how the plugin could return stuff back to the jukebox application when desired.
I just kind of followed what headkaze wrote and that helped a lot.