I need an object / class reflector for an editor I am currently making. It must be written in VB6 or PowerBasic. It may use publicly available code if used in a manner that does not violate copyrights and does not prevent commercial usage of the code without royalties.
Basically, what I need is to be able to pass any of the following three things to a function:
The object's window handle (if currently running) or
The object's ClassName (such as SysListView32, etc) or
The class, such as would be used with the CreateObject command (like [url removed, login to view] or [url removed, login to view]).
(and possibly the CLSID)
Returned from the function in the form of OUT params, I would need all of the members of the class listed in array variables (one for events, one for methods, one for properties, enums, etc). For the methods, I will also need information on how many arguments they accept, the data type of the args, and what (if anything) they return.
This function will be a building block in an editor, and may also be used in another tool for controlling applications from VB script.
I will provide a function prototype (or a description of a class) and description, and the bidder will provide the function itself, and any supporting functions, classes or code, etc.
The method of implementation is fairly flexible and can be negotiated. If you really want to do this in C++ and provide it as a dll, that may work as well, but I strongly prefer that it be done in VB6, or in PowerBasic.
It should be able to handle any class that is listed in the registry under HKEY_CLASSES_ROOT.
I would assume that a programmer who is quite familiar with COM, OLE2, and IUnknown/IDispatch, etc should be able to create this function in a few hours, since there is ample example code on the net, etc.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. I will provide a very simple bare-bones "demo" VB6 application that simply calls the function, and the code must be working with this.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
4) If the code will be packaged as a DLL, the dll must register successfully.
5) The code must be commented heavily, and indented cleanly.
6) The code may be packaged as a stand-alone DLL from PowerBasic, an activex DLL in VB, or as a visual basic module or class, according to what you specify in your bid.
7) The code must show reasonable performance and responsiveness.
8) The code should have a small document with it that explains how to use it (and assumes the coder calling the function does not understand com, the system registry's class structure, type libraries for classes, etc in depth). All the programmer calling the function should need to know is the input parameters they pass in, and that they get lists of the members in several string arrays back out.
This will need to run on Windows 2000 (workstation and server versions)/ XP and Server 2003. I would prefer it also be able to run on Windows 98 / Me and NT4, but it is not strictly necessary.