Hi Ernie, I understand you're very good with COM in assembly. Well, as you may know I'm programming an editor in Visual Basic which due for a pre-release on or before Feb 1st. Anyways... My IDE exports some Classes so users can use these exported classes to create wizards and plugins with ease. Since my IDE is for assembly, I don't want tons of assembly users who want to create wizards or plugins for my program to have to use Visual C++ or VB, i want them to be able to use win32 asm too. So i have a couple of questions. The plugin/wizard is suppose to export a class with the name of "Main" and a few specially named functions. In assembly, i want to create a class with the equivelant and set a name to it, equivelant to a VB program project name, you can retrive the value by App.Title. I also want to emulate the VB function "GetObject" to get an object from the ROT. I understand this might take more explanation, if so, my program will be released on or before Feb 1st with documentation on the wizard/plugin part. I also understand that this may take some work to accomplish this goal, any help you can provide would be deeply appreciated. For more info... www.asmstudio.cjb.net
contact me too if you will please: email@example.com or meet me in IRC #win32asm @EFNET I have some things I'd like to discuss with you :)
in response to your question VB makes OLE automation compliant components, those are dual interfaced (so both IDispatch and VTable). Thus there should normally be no problem calling your COM classes from any other COM client independantly of the language, if it's proper constructed.
I don't have my reference books with me (I'm hoping to pick them up this weekend), so offhand I can't tell you how to read the ROT from asm (I know ole32.dll has to have some function like this). Basically, you have your application object, and you wish to pass a reference to this to an out-of-process wizzard or such, and let the wizzard control your IDE. My guess is you can mark your executable "GlobalMultiUse", use CLSIDFromProgID from asm to get it's CLSID, then call CoCreateInstance to get the Main object reference. I really need my "Inside COM" book to be sure.