TheSwamp

Code Red => AutoLISP (Vanilla / Visual) => Topic started by: MP on November 10, 2007, 12:38:55 AM

Title: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 12:38:55 AM
... a work in progress.

And I need your help to do it.

Based on this thread (http://www.theswamp.org/index.php?topic=19857.0) I've a bunch of LISP code written to achieve the title's namesake and it's working quite nicely, but it's all for naught if the average machine doesn't have the type library info dll installed and registered, so I need you to run a quick test. Although my reading suggests tlbinf32.dll should be on any PC that's had VB or VBA installed (it's what used to populate the object browser [F2]) I hate assuming.

Can you run the code snip that follows and tell me what it prints to the screen?

Code: [Select]
(defun c:TliTest ( / _GetTliCLSID _FindDLL _RegSvr32 _Main )

    (defun _GetTliCLSID ( )
        (vl-registry-read
            (strcat
                "HKEY_CLASSES_ROOT\\"
                "TLI.TLIApplication\\"
                "CLSID"
            )                 
        )
    )   
   
    (defun _FindDLL ( dll / path windir )
   
        (if
            (vl-some
               '(lambda (x) (setq path (findfile x)))
                (list
                    dll
                    (strcat
                        (setq windir (getenv "WinDir"))
                        "\\System\\"
                        dll
                    )
                    (strcat windir "\\System32\\" dll)
                )
            )
            path
        )   
   
    )   
   
    (defun _RegSvr32 ( dll / cmd path match )
   
        (vl-some
           '(lambda (x) (startapp x (strcat "\"" dll "\" /s")))
            (list
                (setq cmd "regsvr32.exe")
                (strcat
                    (setq path (getenv "WinDir"))
                    "\\System\\"
                    cmd
                )
                (strcat path "\\System32\\" cmd)
            )
        )
   
    )
   
    (defun _Main ( / clsid dllpath )
   
        (if (setq clsid (_GetTliCLSID))
            (princ (strcat "Found CLSID: " clsid))
            (if (setq dllpath (_FindDll "tlbinf32.dll"))
                (progn
                    (princ (strcat "Found DLL: " dllpath))
                    (_RegSvr32 dllpath)   
                    (if (setq clsid (_GetTliCLSID))
                        (princ (strcat "Found CLSID: " clsid))
                        (princ "Doh! DLL registration failed.")
                    )
                )
                (princ "Better write a better _FindDLL MP!")
            )
        )
       
        (princ)
   
    )
   
    (_Main)

)

Also, if you could answer these riveting questions --

1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. What path on your machine hosts tlbinf32.dll?
5. Do you have Visual Studio 6 installed on an active drive?

ABUNDANT THANKS FOR YOUR HELP.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 10, 2007, 01:29:45 AM
Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}

added :

FileVersion: 1.1.97.82
buildDate: February 23, 2004
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: VovKa on November 10, 2007, 04:35:05 AM
mine prints nothing. i do have the file you are talking about
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 07:40:51 AM
Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}

added :

FileVersion: 1.1.97.82
buildDate: February 23, 2004

Thanks Kerry, greatly appreciated. Mine's the same version but a day earlier (22). ??

mine prints nothing. i do have the file you are talking about

Thanks for trying VovKa. Couple questions --

1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. What path on your machine hosts tlbinf32.dll?

Thanks folks, appreciate your participation.

:)

Note to self: Write a more robust version of FindDLL.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Chuck Gabriel on November 10, 2007, 07:46:58 AM
Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: mkweaver on November 10, 2007, 08:12:57 AM
... a work in progress.

And I need your help to do it.

Based on this thread (http://www.theswamp.org/index.php?topic=19857.0) I've a bunch of LISP code written to achieve the title's namesake and it's working quite nicely, but it's all for naught if the average machine doesn't have the type library info dll installed and registered, so I need you to run a quick test. Although my reading suggests tlbinf32.dll should be on any PC that's had VB or VBA installed (it's what used to populate the object browser [F2]) I hate assuming.

Can you run the code snip that follows and tell me what it prints to the screen?


Quote
_$ (c:tlitest)
Better write a better _FindDLL MP!
And this with Visual Studio 2005 Pro installed and running with the object browser open.  I also run VBA regularly.

When I first found the tlbinf32.dll information, I wondered if I could count on it being installed on other machines - I appreciate your research.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 08:26:29 AM
And this with Visual Studio 2005 Pro installed and running with the object browser open.  I also run VBA regularly.

That's weird. Couple questions Mike --

1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. What path on your machine hosts tlbinf32.dll?

When I first found the tlbinf32.dll information, I wondered if I could count on it being installed on other machines - I appreciate your research.

My pleasure sir, isn't great we have a place like the swamp to collaborate? Three cheers to Mark Thomas, woot!

Thanks for pitching in Mike.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: VovKa on November 10, 2007, 08:39:31 AM
Quote
Thanks for trying VovKa. Couple questions --
1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. What path on your machine hosts tlbinf32.dll?
first of all, sorry MP, a missed a very important word in my first post, the word "not" :)
should be: "i do NOT have the file you are talking about"
if this still matters, i use w2k sp4, Autocad 2004 with Map enabled, and i've run VBAIDE and it's OK
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: SomeCallMeDave on November 10, 2007, 09:07:05 AM
Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}

Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: CAB on November 10, 2007, 09:20:32 AM
Good morning Michael.

File not found!

1. What version of Windows?  2000 SP4
2. What version of AutoCAD?  2K 2K4 2K6
3. Have you ever run the VBAIDE?  Yes- in all versions, but only to open
4. What path on your machine hosts tlbinf32.dll? None

FYI I have Visual Basic Installed on my D Drive which is disconnected at this time.
If that matters at all.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Sdoman on November 10, 2007, 09:32:30 AM
Hi MP,

Here are my results from running c:tlitest:

Code: [Select]
Command: TLITEST
Better write a better _FindDLL MP!
Command:

My PC:
Windows XP
AutoCAD 2007 SP1
Windows search did not find file tlbinf32.dll

HTH
Steve

Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 11:06:30 AM
Hmmm ....

Group A (yeah)
MP
Kerry
Chuck
Dave
Daniel

Group B (nay)
VovKa
Mike Weaver
CAB
Steve

I'm going to take a wild stab here and guess that Group A has Visual Studio 6 (or Visual BASIC 6) installed on an active drive and that Group B does not.

Can you folks confirm?

Also, if I can confirm tlbinf32.dll is a fully distributable file by Microsoft would you folks that don't have it be ok with a program creating it and registering it? Or would you prefer a link to it so you can install it and register it? I'm leaning towards the latter myself.

Thanks for your participation folks.

:)

Edit: Added Daniel, and it looks like the Visual Studio 6 guess thing might be a reasonable guess.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: It's Alive! on November 10, 2007, 11:11:33 AM
Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}
Windows XP, AC08, VS (6) – 2008, Never touched VBA
Found tlbinf32.dll in system folder

Edit: for installing;  install the complete package.   
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 11:23:52 AM
For anyone just joining this thread, the questions --

1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. If found, what path on your machine hosts tlbinf32.dll?
5. Do you have Visual Studio 6 installed on an active drive?

:)

PS: Thanks to latest folks: CAB, Daniel and Steve.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: mkweaver on November 10, 2007, 11:48:35 AM
For anyone just joining this thread, the questions --

1. What version of Windows?XP Pro, Service Pack 2
2. What version of AutoCAD?2006, vanilla, Service Pack 1
3. Have you ever run the VBAIDE?Yes
4. If found, what path on your machine hosts tlbinf32.dll?Not found
5. Do you have Visual Studio 6 installed on an active drive?No.  but I have Visual Studio 2005 (version 8.0.5)

:)

PS: Thanks to latest folks: CAB, Daniel and Steve.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: mkweaver on November 10, 2007, 11:51:38 AM
...Snip

Also, if I can confirm tlbinf32.dll is a fully distributable file by Microsoft would you folks that don't have it be ok with a program creating it and registering it? Or would you prefer a link to it so you can install it and register it? I'm leaning towards the latter myself.

Thanks for your participation folks.

:)

Edit: Added Daniel, and it looks like the Visual Studio 6 guess thing might be a reasonable guess.

I would prefer a link to install and register.
You've got to love the swamp!
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: SomeCallMeDave on November 10, 2007, 12:50:45 PM
For anyone just joining this thread, the questions --

1. What version of Windows?  XP Home SP 2
2. What version of AutoCAD? 2004-2007, LDD 2005, C3D 2008
3. Have you ever run the VBAIDE? yes
4. If found, what path on your machine hosts tlbinf32.dll? c:\windows\system32
5. Do you have Visual Studio 6 installed on an active drive?  VB6, VS 2005 + some of the Express IDE's

Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 01:55:37 PM
I would prefer a link to install and register.

Mike, I've spent over an hour scanning MS's (no tlbinf32.dll download available) site and another 1/2 hour + googleling like crazy. Though I can find lots of sites that offer the dll none that I feel 100% recommending.  :?

You've got to love the swamp!

Indeed!  :lol:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 01:57:44 PM
For anyone just joining this thread, the questions --

1. What version of Windows?  XP Home SP 2
2. What version of AutoCAD? 2004-2007, LDD 2005, C3D 2008
3. Have you ever run the VBAIDE? yes
4. If found, what path on your machine hosts tlbinf32.dll? c:\windows\system32
5. Do you have Visual Studio 6 installed on an active drive?  VB6, VS 2005 + some of the Express IDE's

Thanks Dave. Pretty much seals it for me -- those that have the dll can attribute it to a VS/VB6 install or a VB authored program that references said dll and includes it in a setup.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: VovKa on November 10, 2007, 02:44:17 PM
i have a distribution package of Visual Basic 6.0, TLBINF32.DLL is there. i copied it and registered.
and i got Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 03:41:21 PM
Thanks VovKa. Hope to be able to share some decent code by weekend's end.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 04:55:01 PM
Well .... interrogation via TLBINF32.DLL doesn't appear to be missing anything:

Selecting a simple line object:

Properties:

    TLBINF32.DLL Interrogation                               VLAX-DUMP-OBJECT

    ("Angle" 0.430894)                                       Angle (RO) = 0.430894
    ("Application" #<VLA-OBJECT IAcadApplication 00d73d3c>)  Application (RO) = #<VLA-OBJECT IAcadApplication 00d73d3c>
    ("Color" 256)                                            -
    ("Database" #<VLA-OBJECT IAcadDatabase 0bc4ffd4>)        -
    ("Delta" (1155.15 531.026 0.0))                          Delta (RO) = (1155.15 531.026 0.0)
    ("Document" #<VLA-OBJECT IAcadDocument 01c35fc8>)        Document (RO) = #<VLA-OBJECT IAcadDocument 01c35fc8>
    ("EndPoint" (2069.81 1103.29 0.0))                       EndPoint = (2069.81 1103.29 0.0)
    ("EntityName" "AcDbLine")                                -
    ("EntityType" 19)                                        -
    ("Handle" "1AD")                                         Handle (RO) = "1AD"
    ("HasExtensionDictionary" 0)                             HasExtensionDictionary (RO) = 0
    ("Hyperlinks" #<VLA-OBJECT IAcadHyperlinks 0bc8398c>)    Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0bc8486c>
    ("Layer" "0")                                            Layer = "0"
    ("Length" 1271.36)                                       Length (RO) = 1271.36
    ("Linetype" "ByLayer")                                   Linetype = "ByLayer"
    ("LinetypeScale" 1.0)                                    LinetypeScale = 1.0
    ("Lineweight" -1)                                        Lineweight = -1
    ("Material" "ByLayer")                                   Material = "ByLayer"
    ("Normal" (0.0 0.0 1.0))                                 Normal = (0.0 0.0 1.0)
    ("ObjectID" 2130322280)                                  ObjectID (RO) = 2130322280
    ("ObjectName" "AcDbLine")                                ObjectName (RO) = "AcDbLine"
    ("OwnerID" 2130316536)                                   OwnerID (RO) = 2130316536
    ("PlotStyleName" "ByLayer")                              PlotStyleName = "ByLayer"
    ("StartPoint" (914.661 572.261 0.0))                     StartPoint = (914.661 572.261 0.0)
    ("Thickness" 0.0)                                        Thickness = 0.0
    ("TrueColor" #<VLA-OBJECT IAcadAcCmColor 0bc61de0>)      TrueColor = #<VLA-OBJECT IAcadAcCmColor 0bc61e40>
    ("Visible" -1)                                           Visible = -1

Methods:

    TLBINF32.DLL Interrogation                               VLAX-DUMP-OBJECT

    ("AddRef" 0)                                             -
    ("ArrayPolar" 3)                                         ArrayPolar (3)
    ("ArrayRectangular" 6)                                   ArrayRectangular (6)
    ("Copy" 0)                                               Copy ()
    ("Delete" 0)                                             Delete ()
    ("Erase" 0)                                              -
    ("GetBoundingBox" 2)                                     GetBoundingBox (2)
    ("GetExtensionDictionary" 0)                             GetExtensionDictionary ()
    ("GetIDsOfNames" 5)                                      -
    ("GetTypeInfo" 3)                                        -
    ("GetTypeInfoCount" 1)                                   -
    ("GetXData" 3)                                           GetXData (3)
    ("Highlight" 1)                                          Highlight (1)
    ("IntersectWith" 2)                                      IntersectWith (2)
    ("Invoke" 8)                                             -
    ("Mirror" 2)                                             Mirror (2)
    ("Mirror3D" 3)                                           Mirror3D (3)
    ("Move" 2)                                               Move (2)
    ("Offset" 1)                                             Offset (1)
    ("QueryInterface" 2)                                     -
    ("Release" 0)                                            -
    ("Rotate" 2)                                             Rotate (2)
    ("Rotate3D" 3)                                           Rotate3D (3)
    ("ScaleEntity" 2)                                        ScaleEntity (2)
    ("SetXData" 2)                                           SetXData (2)
    ("TransformBy" 1)                                        TransformBy (1)
    ("Update" 0)                                             Update ()


Couple things surprised me, like what's up with color?

Next up: Flag hidden properties / methods.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Sdoman on November 10, 2007, 05:35:06 PM
For anyone just joining this thread, the questions --

1. What version of Windows? Windows XP
2. What version of AutoCAD? 2007 sp1 (vanilla)
3. Have you ever run the VBAIDE? Yes, every day. Well almost every day : )
4. If found, what path on your machine hosts tlbinf32.dll? Not found.  However, Windows sometimes fails to find files I know are on my system.
5. Do you have Visual Studio 6 installed on an active drive? I have Visual C++ 2005 Express Edition

:)

PS: Thanks to latest folks: CAB, Daniel and Steve.

You're welcome. 
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: T.Willey on November 10, 2007, 06:06:13 PM
I'm willing to test when I get to work.  Here is a pic showing how hard it is to read the blue text on a dark background.   :wink:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 06:20:37 PM
I'm willing to test when I get to work.  Here is a pic showing how hard it is to read the blue text on a dark background.   :wink:

Sounds great Tim. PS, changed the color just for you.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 06:27:38 PM
Next up: Flag hidden properties / methods.

Done.

PROPERTIES

    ("Angle" 0.430894)
    ("Application" #<VLA-OBJECT IAcadApplication 00d73d3c>)
    ("Color" 256 HIDDEN)
    ("Database" #<VLA-OBJECT IAcadDatabase 0bc4ffd4> HIDDEN)
    ("Delta" (1155.15 531.026 0.0))
    ("Document" #<VLA-OBJECT IAcadDocument 01c35fc8>)
    ("EndPoint" (2069.81 1103.29 0.0))
    ("EntityName" "AcDbLine" HIDDEN)
    ("EntityType" 19 HIDDEN)
    ("Handle" "1AD")
    ("HasExtensionDictionary" 0)
    ("Hyperlinks" #<VLA-OBJECT IAcadHyperlinks 0bc83b4c>)
    ("Layer" "0")
    ("Length" 1271.36)
    ("Linetype" "ByLayer")
    ("LinetypeScale" 1.0)
    ("Lineweight" -1)
    ("Material" "ByLayer")
    ("Normal" (0.0 0.0 1.0))
    ("ObjectID" 2130322280)
    ("ObjectName" "AcDbLine")
    ("OwnerID" 2130316536)
    ("PlotStyleName" "ByLayer")
    ("StartPoint" (914.661 572.261 0.0))
    ("Thickness" 0.0)
    ("TrueColor" #<VLA-OBJECT IAcadAcCmColor 0bc624a0>)
    ("Visible" -1)

METHODS

    ("AddRef" 0)
    ("ArrayPolar" 3)
    ("ArrayRectangular" 6)
    ("Copy" 0)
    ("Delete" 0)
    ("Erase" 0 HIDDEN)
    ("GetBoundingBox" 2)
    ("GetExtensionDictionary" 0)
    ("GetIDsOfNames" 5)
    ("GetTypeInfo" 3)
    ("GetTypeInfoCount" 1)
    ("GetXData" 3)
    ("Highlight" 1)
    ("IntersectWith" 2)
    ("Invoke" 8)
    ("Mirror" 2)
    ("Mirror3D" 3)
    ("Move" 2)
    ("Offset" 1)
    ("QueryInterface" 2)
    ("Release" 0)
    ("Rotate" 2)
    ("Rotate3D" 3)
    ("ScaleEntity" 2)
    ("SetXData" 2)
    ("TransformBy" 1)
    ("Update" 0)
   
   
Now what ... hmmm ... oh yeah, argument names / types / optional flags :)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: T.Willey on November 10, 2007, 06:35:30 PM
'Color' property might not show up when you use 'dump' on the object, but you can use it.  I have used it plenty of times instead of going through the 'TrueColor' object.

I'm willing to test when I get to work.  Here is a pic showing how hard it is to read the blue text on a dark background.   :wink:

Sounds great Tim. PS, changed the color just for you.
I just highlight the post so I can see it, but I just thought I would point it out since you did on my post.  :mrgreen:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 06:41:13 PM
'Color' property might not show up when you use 'dump' on the object, but you can use it.  I have used it plenty of times instead of going through the 'TrueColor' object.

Hidden doesn't mean you can't use it (as you've noted) -- I've used hidden members for years in Visual BASIC (when in the Object Browser right click and select "Show hidden members"; ipso facto). However, one should be mindful that hidden means it shouldn't be used blithely, there may be valid reasons members are hidden including, but not limited to planned obsolescence.

I just highlight the post so I can see it, but I just thought I would point it out since you did on my post.

Ha! Got me, I forgot (the ol' sponge doesn't hold as much as it once did)!

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 07:49:51 PM
Ha, arguments list is now licked. Also determined if a property is read-only.

PROPERTIES   
   
    ("Angle" 0.430894 READONLY)
    ("Application" #<VLA-OBJECT IAcadApplication 00d73d3c> READONLY)
    ("Color" 256 HIDDEN)
    ("Database" #<VLA-OBJECT IAcadDatabase 0bc4ffd4> READONLY HIDDEN)
    ("Delta" (1155.15 531.026 0.0) READONLY)
    ("Document" #<VLA-OBJECT IAcadDocument 01c35fc8> READONLY)
    ("EndPoint" (2069.81 1103.29 0.0))
    ("EntityName" "AcDbLine" READONLY HIDDEN)
    ("EntityType" 19 READONLY HIDDEN)
    ("Handle" "1AD" READONLY)
    ("HasExtensionDictionary" 0 READONLY)
    ("Hyperlinks" #<VLA-OBJECT IAcadHyperlinks 0bc83bbc> READONLY)
    ("Layer" "0")
    ("Length" 1271.36 READONLY)
    ("Linetype" "ByLayer")
    ("LinetypeScale" 1.0)
    ("Lineweight" -1)
    ("Material" "ByLayer")
    ("Normal" (0.0 0.0 1.0))
    ("ObjectID" 2130322280 READONLY)
    ("ObjectName" "AcDbLine" READONLY)
    ("OwnerID" 2130316536 READONLY)
    ("PlotStyleName" "ByLayer")
    ("StartPoint" (914.661 572.261 0.0))
    ("Thickness" 0.0)
    ("TrueColor" #<VLA-OBJECT IAcadAcCmColor 0bc624a0>)
    ("Visible" -1)
   
METHODS   
   
    ("AddRef" 0)
    ("ArrayPolar" 3 ("NumberOfObjects" "AngleToFill" "CenterPoint"))
    ("ArrayRectangular" 6 ("NumberOfRows" "NumberOfColumns" "NumberOfLevels" "DistBetweenRows" "DistBetweenCols" "DistBetweenLevels"))
    ("Copy" 0)
    ("Delete" 0)
    ("Erase" 0 HIDDEN)
    ("GetBoundingBox" 2 ("MinPoint" "MaxPoint"))
    ("GetExtensionDictionary" 0)
    ("GetIDsOfNames" 5 ("riid" "rgszNames" "cNames" "lcid" "rgdispid"))
    ("GetTypeInfo" 3 ("itinfo" "lcid" "pptinfo"))
    ("GetTypeInfoCount" 1 ("pctinfo"))
    ("GetXData" 3 ("AppName" "XDataType" "XDataValue"))
    ("Highlight" 1 ("HighlightFlag"))
    ("IntersectWith" 2 ("IntersectObject" "option"))
    ("Invoke" 8 ("dispidMember" "riid" "lcid" "wFlags" "pdispparams" "pvarResult" "pexcepinfo" "puArgErr"))
    ("Mirror" 2 ("Point1" "Point2"))
    ("Mirror3D" 3 ("Point1" "Point2" "point3"))
    ("Move" 2 ("FromPoint" "ToPoint"))
    ("Offset" 1 ("Distance"))
    ("QueryInterface" 2 ("riid" "ppvObj"))
    ("Release" 0)
    ("Rotate" 2 ("BasePoint" "RotationAngle"))
    ("Rotate3D" 3 ("Point1" "Point2" "RotationAngle"))
    ("ScaleEntity" 2 ("BasePoint" "ScaleFactor"))
    ("SetXData" 2 ("XDataType" "XDataValue"))
    ("TransformBy" 1 ("TransformationMatrix"))
    ("Update" 0)


Hmmm, now what ...  :lol:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 07:57:56 PM
Hmmm, now what ...

Argument types and flags (like optional).

Yes, I'm talking to myself.

:P
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 08:35:47 PM
Added argument types:

PROPERTIES

    ("Angle" 0.430894 READONLY)
    ("Application" #<VLA-OBJECT IAcadApplication 00d73d3c> READONLY)
    ("Color" 256 HIDDEN)
    ("Database" #<VLA-OBJECT IAcadDatabase 0bc4ffd4> READONLY HIDDEN)
    ("Delta" (1155.15 531.026 0.0) READONLY)
    ("Document" #<VLA-OBJECT IAcadDocument 01c35fc8> READONLY)
    ("EndPoint" (2069.81 1103.29 0.0))
    ("EntityName" "AcDbLine" READONLY HIDDEN)
    ("EntityType" 19 READONLY HIDDEN)
    ("Handle" "1AD" READONLY)
    ("HasExtensionDictionary" 0 READONLY)
    ("Hyperlinks" #<VLA-OBJECT IAcadHyperlinks 0bc83fe4> READONLY)
    ("Layer" "0")
    ("Length" 1271.36 READONLY)
    ("Linetype" "ByLayer")
    ("LinetypeScale" 1.0)
    ("Lineweight" -1)
    ("Material" "ByLayer")
    ("Normal" (0.0 0.0 1.0))
    ("ObjectID" 2130322280 READONLY)
    ("ObjectName" "AcDbLine" READONLY)
    ("OwnerID" 2130316536 READONLY)
    ("PlotStyleName" "ByLayer")
    ("StartPoint" (914.661 572.261 0.0))
    ("Thickness" 0.0)
    ("TrueColor" #<VLA-OBJECT IAcadAcCmColor 0bc63190>)
    ("Visible" -1)

METHODS

    ("AddRef" 0)
    ("ArrayPolar" 3 (("NumberOfObjects" INT) ("AngleToFill" R8) ("CenterPoint" variant)))
    ("ArrayRectangular" 6 (("NumberOfRows" INT) ("NumberOfColumns" INT) ("NumberOfLevels" INT) ("DistBetweenRows" R8) ("DistBetweenCols" R8) ("DistBetweenLevels" R8)))
    ("Copy" 0)
    ("Delete" 0)
    ("Erase" 0 HIDDEN)
    ("GetBoundingBox" 2 (("MinPoint" variant) ("MaxPoint" variant)))
    ("GetExtensionDictionary" 0)
    ("GetIDsOfNames" 5 (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)))
    ("GetTypeInfo" 3 (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)))
    ("GetTypeInfoCount" 1 (("pctinfo" UINT)))
    ("GetXData" 3 (("AppName" BSTR) ("XDataType" variant) ("XDataValue" variant)))
    ("Highlight" 1 (("HighlightFlag" BOOL)))
    ("IntersectWith" 2 (("IntersectObject" DISPATCH) ("option" EMPTY)))
    ("Invoke" 8 (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" variant) ("pexcepinfo" EMPTY) ("puArgErr" UINT)))
    ("Mirror" 2 (("Point1" variant) ("Point2" variant)))
    ("Mirror3D" 3 (("Point1" variant) ("Point2" variant) ("point3" variant)))
    ("Move" 2 (("FromPoint" variant) ("ToPoint" variant)))
    ("Offset" 1 (("Distance" R8)))
    ("QueryInterface" 2 (("riid" EMPTY) ("ppvObj" VOID)))
    ("Release" 0)
    ("Rotate" 2 (("BasePoint" variant) ("RotationAngle" R8)))
    ("Rotate3D" 3 (("Point1" variant) ("Point2" variant) ("RotationAngle" R8)))
    ("ScaleEntity" 2 (("BasePoint" variant) ("ScaleFactor" R8)))
    ("SetXData" 2 (("XDataType" variant) ("XDataValue" variant)))
    ("TransformBy" 1 (("TransformationMatrix" variant)))
    ("Update" 0)


On to the optional flag ... :lol:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 10, 2007, 09:07:08 PM

By any chance had you planned on throwing these into an OpenDCL Grid :-)

the potential looks pretty spiffy Michael !
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 09:10:31 PM

By any chance had you planned on throwing these into an OpenDCL Grid :-)

the potential looks pretty spiffy Michael !

Ye bastid, had to give away the surprise dincha?

 :pissed:

(Listview is more appropriate me thinks).

Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 10, 2007, 09:23:13 PM

By any chance had you planned on throwing these into an OpenDCL Grid :-)

the potential looks pretty spiffy Michael !

Ye bastid, had to give away the surprise dincha?

 :pissed:

(Listview is more appropriate me thinks).



Oooops ...   :oops:

yep, Listview may be better ..
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 10, 2007, 09:24:45 PM
Oooops ...   :oops:

Ha, no worries, I mean it would be the logical conclusion given me history no?

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Glenn R on November 11, 2007, 12:12:58 AM
Code: [Select]
Command: tlitest
Better write a better _FindDLL MP!

Windows XP SP2 with all the latest bloatware.
Visual Studio 2005 - did have Vis Studio 2003 and Visual Studio .NET and Visual Studio 6 on here but removed.
AutoCAD's 2006, 2007 and 2008
Run VBA in all of them...I think that's all you need.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 11:14:31 AM
Code: [Select]
Command: tlitest
Better write a better _FindDLL MP!

Windows XP SP2 with all the latest bloatware.
Visual Studio 2005 - did have Vis Studio 2003 and Visual Studio .NET and Visual Studio 6 on here but removed.
AutoCAD's 2006, 2007 and 2008
Run VBA in all of them...I think that's all you need.

Thanks Glenn. That latter tidbit would sure be nice, but no way I can test -- all my pcs, including work, have VB6 Enterprise installed.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 11:19:31 AM
Update, licked the optional flag --

PROPERTIES

    (NAME VALUE VISIBILITY ACCESS)

    ("Active" -1 VISIBLE READONLY)
    ("ActiveDimStyle" #<VLA-OBJECT IAcadDimStyle 0bc56194> VISIBLE READONLY)
    ("ActiveLayer" #<VLA-OBJECT IAcadLayer 0bc560f4> VISIBLE READONLY)
    ("ActiveLayout" #<VLA-OBJECT IAcadLayout 0bc55b54> VISIBLE READONLY)
    ("ActiveLinetype" #<VLA-OBJECT IAcadLineType 0bc56004> VISIBLE READONLY)
    ("ActiveMaterial" #<VLA-OBJECT IAcadMaterial 0bc55e74> VISIBLE READONLY)
    ("ActivePViewport" #<VLA-OBJECT IAcadPViewport2 0bc75ae4> VISIBLE READONLY)
    ("ActiveSelectionSet" #<VLA-OBJECT IAcadSelectionSet 0be2d6ac> VISIBLE READONLY)
    ("ActiveSpace" 0 VISIBLE READONLY)
    ("ActiveTextStyle" #<VLA-OBJECT IAcadTextStyle 0bc56054> VISIBLE READONLY)
    ("ActiveUCS" "<Error: AutoCAD: Null object ID>" VISIBLE READONLY)
    ("ActiveViewport" "<Error: AutoCAD: No active viewport in paperspace>" VISIBLE READONLY)
    ("Application" #<VLA-OBJECT IAcadApplication 00d73d3c> VISIBLE READONLY)
    ("Blocks" #<VLA-OBJECT IAcadBlocks 0bc559c4> VISIBLE READONLY)
    ("Database" #<VLA-OBJECT IAcadDatabase 0bc4ffd4> VISIBLE READONLY)
    ("Dictionaries" #<VLA-OBJECT IAcadDictionaries 0bc55ba4> VISIBLE READONLY)
    ("DimStyles" #<VLA-OBJECT IAcadDimStyles 0bc55c94> VISIBLE READONLY)
    ("ElevationModelSpace" 0.0 VISIBLE READONLY)
    ("ElevationPaperSpace" 0.0 VISIBLE READONLY)
    ("FileDependencies" #<VLA-OBJECT IAcadFileDependencies 0bc4c59c> VISIBLE READONLY)
    ("FullName" "" VISIBLE READONLY)
    ("Groups" #<VLA-OBJECT IAcadGroups 0bc55fb4> VISIBLE READONLY)
    ("HWND" 1575628 VISIBLE READONLY)
    ("Height" 1041 VISIBLE READONLY)
    ("Layers" #<VLA-OBJECT IAcadLayers 0bc56234> VISIBLE READONLY)
    ("Layouts" #<VLA-OBJECT IAcadLayouts 0bc558d4> VISIBLE READONLY)
    ("Limits" (0.0 0.0 420.0 297.0) VISIBLE READONLY)
    ("Linetypes" #<VLA-OBJECT IAcadLineTypes 0bc55ab4> VISIBLE READONLY)
    ("MSpace" 0 VISIBLE READONLY)
    ("Materials" #<VLA-OBJECT IAcadMaterials 0bc56144> VISIBLE READONLY)
    ("ModelSpace" #<VLA-OBJECT IAcadModelSpace2 0bc55b04> VISIBLE READONLY)
    ("Name" "Drawing1.dwg" VISIBLE READONLY)
    ("ObjectSnapMode" 0 VISIBLE READONLY)
    ("PaperSpace" #<VLA-OBJECT IAcadPaperSpace2 0bc55dd4> VISIBLE READONLY)
    ("Path" "C:\\Users\\programmer\\Documents" VISIBLE READONLY)
    ("PickfirstSelectionSet" #<VLA-OBJECT IAcadSelectionSet 0be2e75c> VISIBLE READONLY)
    ("Plot" #<VLA-OBJECT IAcadPlot 10207e94> VISIBLE READONLY)
    ("PlotConfigurations" #<VLA-OBJECT IAcadPlotConfigurations 0bc55bf4> VISIBLE READONLY)
    ("Preferences" #<VLA-OBJECT IAcadDatabasePreferences 0bc4c524> VISIBLE READONLY)
    ("ReadOnly" 0 VISIBLE READONLY)
    ("RegisteredApplications" #<VLA-OBJECT IAcadRegisteredApplications 0bc55f14> VISIBLE READONLY)
    ("Saved" 0 VISIBLE READONLY)
    ("SectionManager" "<Error: Exception occurred>" VISIBLE READONLY)
    ("SelectionSets" #<VLA-OBJECT IAcadSelectionSets 01bb946c> VISIBLE READONLY)
    ("SummaryInfo" #<VLA-OBJECT IAcadSummaryInfo 0bc4c5c4> VISIBLE READONLY)
    ("TextStyles" #<VLA-OBJECT IAcadTextStyles 0bc55c44> VISIBLE READONLY)
    ("UserCoordinateSystems" #<VLA-OBJECT IAcadUCSs 0bc560a4> VISIBLE READONLY)
    ("Utility" #<VLA-OBJECT IAcadUtility 0be5828c> VISIBLE READONLY)
    ("Viewports" #<VLA-OBJECT IAcadViewports 0bc55ec4> VISIBLE READONLY)
    ("Views" #<VLA-OBJECT IAcadViews 0bc55d34> VISIBLE READONLY)
    ("Width" 1936 VISIBLE READONLY)
    ("WindowState" 3 VISIBLE READONLY)
    ("WindowTitle" "Drawing1.dwg" VISIBLE READONLY)

METHODS

    (NAME ARGUMENTS VISIBILITY)

    ("Activate" nil VISIBLE)
    ("AddRef" nil VISIBLE)
    ("AuditInfo" (("FixErr" BOOL)) VISIBLE)
    ("Close" (("SaveChanges" VARIANT OPTIONAL) ("FileName" VARIANT OPTIONAL)) VISIBLE)
    ("CopyObjects" (("Objects" VARIANT) ("Owner" VARIANT OPTIONAL) ("IdPairs" VARIANT OPTIONAL)) VISIBLE)
    ("EndUndoMark" nil VISIBLE)
    ("Export" (("FileName" STR) ("Extension" STR) ("SelectionSet" EMPTY)) VISIBLE)
    ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)) VISIBLE)
    ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) VISIBLE)
    ("GetTypeInfoCount" (("pctinfo" UINT)) VISIBLE)
    ("GetVariable" (("Name" STR)) VISIBLE)
    ("HandleToObject" (("Handle" STR)) VISIBLE)
    ("Import" (("FileName" STR) ("InsertionPoint" VARIANT) ("ScaleFactor" REAL)) VISIBLE)
    ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" VARIANT) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) VISIBLE)
    ("LoadShapeFile" (("FullName" STR)) VISIBLE)
    ("New" (("TemplateFileName" STR)) VISIBLE)
    ("ObjectIdToObject" (("ObjectID" I4)) VISIBLE)
    ("Open" (("FullName" STR) ("Password" VARIANT OPTIONAL)) VISIBLE)
    ("PurgeAll" nil VISIBLE)
    ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) VISIBLE)
    ("Regen" (("WhichViewports" EMPTY)) VISIBLE)
    ("Release" nil VISIBLE)
    ("Save" nil VISIBLE)
    ("SaveAs" (("FullFileName" STR) ("SaveAsType" VARIANT OPTIONAL) ("vSecurityParams" VARIANT OPTIONAL)) VISIBLE)
    ("SendCommand" (("Command" STR)) VISIBLE)
    ("SetVariable" (("Name" STR) ("Value" VARIANT)) VISIBLE)
    ("StartUndoMark" nil VISIBLE)
    ("Wblock" (("FileName" STR) ("SelectionSet" EMPTY)) VISIBLE)


:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: T.Willey on November 12, 2007, 11:24:03 AM
1. What version of Windows? - Xp Pro Sp2
2. What version of AutoCAD? - '06, '08 Electrical
3. Have you ever run the VBAIDE? - Maybe (but won't now)
4. What path on your machine hosts tlbinf32.dll? - N/A
5. Do you have Visual Studio 6 installed on an active drive? - Nope.

Quote from: Acad command line
Command: tlitest
Better write a better _FindDLL MP!
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: T.Willey on November 12, 2007, 11:25:07 AM
Looks like you are enjoying this one Michael.  Good work.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 11:28:37 AM
Thanks x 2 Tim!

It's been a real hoot, a great technical challenge and the basis of other pet projects I've had for years (object interrogation that is).

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 11:51:53 AM
Woo hoo, this one had been eluding me --

METHODS    

    (NAME ARGUMENTS VISIBILITY ACCESS)

    ("Activate" nil VISIBLE NORMAL)
    ("AddRef" nil VISIBLE RESTRICTED)
    ("AuditInfo" (("FixErr" BOOL)) VISIBLE NORMAL)
    ("Close" (("SaveChanges" variant OPTIONAL) ("FileName" variant OPTIONAL)) VISIBLE NORMAL)
    ("CopyObjects" (("Objects" variant) ("Owner" variant OPTIONAL) ("IdPairs" variant OPTIONAL)) VISIBLE NORMAL)
    ("EndUndoMark" nil VISIBLE NORMAL)
    ("Export" (("FileName" STR) ("Extension" STR) ("SelectionSet" EMPTY)) VISIBLE NORMAL)
    ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)) VISIBLE RESTRICTED)
    ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) VISIBLE RESTRICTED)
    ("GetTypeInfoCount" (("pctinfo" UINT)) VISIBLE RESTRICTED)
    ("GetVariable" (("Name" STR)) VISIBLE NORMAL)
    ("HandleToObject" (("Handle" STR)) VISIBLE NORMAL)
    ("Import" (("FileName" STR) ("InsertionPoint" variant) ("ScaleFactor" REAL)) VISIBLE NORMAL)
    ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" variant) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) VISIBLE RESTRICTED)
    ("LoadShapeFile" (("FullName" STR)) VISIBLE NORMAL)
    ("New" (("TemplateFileName" STR)) VISIBLE NORMAL)
    ("ObjectIdToObject" (("ObjectID" I4)) VISIBLE NORMAL)
    ("Open" (("FullName" STR) ("Password" variant OPTIONAL)) VISIBLE NORMAL)
    ("PurgeAll" nil VISIBLE NORMAL)
    ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) VISIBLE RESTRICTED)
    ("Regen" (("WhichViewports" EMPTY)) VISIBLE NORMAL)
    ("Release" nil VISIBLE RESTRICTED)
    ("Save" nil VISIBLE NORMAL)
    ("SaveAs" (("FullFileName" STR) ("SaveAsType" variant OPTIONAL) ("vSecurityParams" variant OPTIONAL)) VISIBLE NORMAL)
    ("SendCommand" (("Command" STR)) VISIBLE NORMAL)
    ("SetVariable" (("Name" STR) ("Value" variant)) VISIBLE NORMAL)
    ("StartUndoMark" nil VISIBLE NORMAL)
    ("Wblock" (("FileName" STR) ("SelectionSet" EMPTY)) VISIBLE NORMAL)




I think I may be close to being done the functional core.

:(
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Bob Wahr on November 12, 2007, 11:54:16 AM
I pasted your code into my VBAIDE and it won't run.  Looks like complete and total crap to me.  What are all the curvy things?

Quote from: Command Line
C:TLITEST

Command: tlitest
Better write a better _FindDLL MP!

Command:

1. What version of Windows?
        Microsoft Windows
        Version 5.1 (Build 2600.xpsp_sp2_qfe.070227-2300 : Service Pack 2)
2. What version of AutoCAD?
        AutoCAD 2008
        B.51.0(UNICODE)
3. Have you ever run the VBAIDE?
        Yeppers
4. What path on your machine hosts tlbinf32.dll?
        Search is complete.  There are no results to display.
5. Do you have Visual Studio 6 installed on an active drive?
        No, haven't installed since the move.


Hmmm...guess I should read through the entire thread before posting.  You probably don't need the info, but just in case...
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 11:57:44 AM
Thank you Bob, it's good info.

It supports my supposition that machines that have had Visual BASIC 6 installed sport the dll, otherwise no.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: FengK on November 12, 2007, 01:11:16 PM
Command: TliTest Better write a better _FindDLL MP!

1. What version of Windows? 
Windows XP Pro

2. What version of AutoCAD?
AutoCAD 2007

3. Have you ever run the VBAIDE?
Yes

4. What path on your machine hosts tlbinf32.dll?
Searched in C drive. Not found.

5. Do you have Visual Studio 6 installed on an active drive?
No.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 02:49:25 PM
Ok, it took me forever, but I found a reliable / safe source for TLBINF32.DLL for those that might want it.

Visual Studio 6, Service Pack 6 (http://www.microsoft.com/downloads/details.aspx?familyid=A8494EDB-2E89-4676-A16A-5C5477CB9713&displaylang=en).

Said service pack, which manifests itself as a zip executable (Vs6sp6.exe), can be opened via winzip. Vs6sp6.exe hosts cab file VS6SP61.cab, which can also be opened via winzip, which hosts TLBINF32.DLL.

:P
Title: A question of legality
Post by: Bob Wahr on November 12, 2007, 02:52:35 PM
Is using a DLL from a CAB, from a service pack for a program that you don't own be a copyright issue with Microsoft?
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: LE on November 12, 2007, 03:34:05 PM
Can be downloaded from here:

http://home.wtal.de/ib/freisoft/

http://www.vbaccelerator.com/codelib/actvxdoc/article.htm

and a sample implementation:

http://msdn.microsoft.com/msdnmag/issues/1200/TypeLib/default.aspx
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 12, 2007, 04:51:10 PM
Can be downloaded from here:

http://home.wtal.de/ib/freisoft/

http://www.vbaccelerator.com/codelib/actvxdoc/article.htm

and a sample implementation:

http://msdn.microsoft.com/msdnmag/issues/1200/TypeLib/default.aspx

I know you mean well Luis but the dll is not on vbaccelerator's site and do you fully trust the other?

I found dozens of sites that hosted the dll but none I felt comfortable suggesting other than what I previously posted.

Just sayin'.

Is using a DLL from a CAB, from a service pack for a program that you don't own be a copyright issue with Microsoft?

Valid and important question. Sorry, I don't know Bob. It's the only source I felt comfortable suggesting.

{shrug}
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: LE on November 12, 2007, 06:07:47 PM
Yes.... that was an implementation sample too...


About the DLL download area.... I saw a lot of other samples linking to that place.


BTW, I do not have that dll in any of my pc [5]

I have also Visual Studio Pro 6.0 that I do not use anymore and also the VB 6.0 that do not use of have installed... no idea if it is in any of them.

Visual Studio 2005 does not include with that... either
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Didge on November 13, 2007, 03:09:24 AM
"Better write a better _FindDLL MP!"

1. What version of Windows?  : Windows XP Pro

2. What version of AutoCAD? : MAP 3D 2006.

3. Have you ever run the VBAIDE? : Only out of curiosity.

4. What path on your machine hosts tlbinf32.dll? : Cannot locate any instance of this file.

5. Do you have Visual Studio 6 installed on an active drive? : No.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 07:43:18 AM
"Better write a better _FindDLL MP!"

...

Thanks Didge, appreciate you taking the time.

BTW, I do not have that dll in any of my pc [5]

I have also Visual Studio Pro 6.0 that I do not use anymore and also the VB 6.0 that do not use of have installed... no idea if it is in any of them.

Visual Studio 2005 does not include with that... either

Lines up with the rest of the reports. Thanks Luis.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 07:50:29 AM
This just in:

PROPERTIES

    (PROPERTY VALUE ACCESS VISIBILITY)

    ("CodePane" #<VLA-OBJECT _CodePane 077d6758> READONLY NORMAL)
    ("CountOfDeclarationLines" 1 READONLY NORMAL)
    ("CountOfLines" 7 READONLY NORMAL)
    ("Lines" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("Name" "ThisDrawing" READWRITE HIDDEN)
    ("Parent" #<VLA-OBJECT _VBComponent 071fb1bc> READONLY NORMAL)
    ("ProcBodyLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcCountLines" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcOfLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcStartLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("VBE" #<VLA-OBJECT VBE 07361c84> READONLY NORMAL)
   
METHODS   

    (METHOD ARGUMENTS ACCESS)

    ("AddFromFile" (("FileName" STR)) NORMAL)
    ("AddFromString" (("String" STR)) NORMAL)
    ("AddRef" nil RESTRICTED)
    ("CreateEventProc" (("EventName" STR) ("ObjectName" STR)) NORMAL)
    ("DeleteLines" (("StartLine" I4) ("Count" I4 OPTIONAL)) NORMAL)
    ("Find" (("Target" STR) ("StartLine" I4) ("StartColumn" I4) ("EndLine" I4) ("EndColumn" I4) ("WholeWord" BOOL OPTIONAL) ("MatchCase" BOOL OPTIONAL) ("PatternSearch" BOOL OPTIONAL)) NORMAL)
    ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)) RESTRICTED)
    ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) RESTRICTED)
    ("GetTypeInfoCount" (("pctinfo" UINT)) RESTRICTED)
    ("InsertLines" (("Line" I4) ("String" STR)) NORMAL)
    ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" variant) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) RESTRICTED)
    ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) RESTRICTED)
    ("Release" nil RESTRICTED)
    ("ReplaceLine" (("Line" I4) ("String" STR)) NORMAL)


Wanders off, rubbing hands, laughing maniacally ...
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 13, 2007, 07:59:33 AM
Michael,

.. Comments ?

Quote
... But it's actually probably easier to use OLEAUT32.DLL directly than it is to use TLBINF32.DLL.
Type Library Reader / Object Browser
updated 2007-10-07
http://www.jsware.net/jsware/vbcode.php3#tlbc

Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 08:07:33 AM
But it's actually probably easier to use OLEAUT32.DLL directly than it is to use TLBINF32.DLL.

I saw that Kerry (more than once) but it shares a worse fate than TLBINF32.DLL -- it's not on my pc even tho I've VB6 Enterprise installed. Figure that?

For all it's difficulty I've pretty much milked out everything I want from TLBINF32.DLL. I won't rule out OLEAUT32.DLL, but as I've many fish to fry and the TLBINF32.DLL is working (beyond my expectations really) OLEAUT32.DLL is a back burner route for now.

But genuine thanks for the heads up -- it's good to have scouts.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: SomeCallMeDave on November 13, 2007, 08:18:15 AM
This just in:

PROPERTIES

    (PROPERTY VALUE ACCESS VISIBILITY)

    ("CodePane" #<VLA-OBJECT _CodePane 077d6758> READONLY NORMAL)
    ("CountOfDeclarationLines" 1 READONLY NORMAL)
    ("CountOfLines" 7 READONLY NORMAL)
    ("Lines" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("Name" "ThisDrawing" READWRITE HIDDEN)
    ("Parent" #<VLA-OBJECT _VBComponent 071fb1bc> READONLY NORMAL)
    ("ProcBodyLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcCountLines" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcOfLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("ProcStartLine" "<Error: Invalid number of parameters>" READONLY NORMAL)
    ("VBE" #<VLA-OBJECT VBE 07361c84> READONLY NORMAL)
   
METHODS   

    (METHOD ARGUMENTS ACCESS)

    ("AddFromFile" (("FileName" STR)) NORMAL)
    ("AddFromString" (("String" STR)) NORMAL)
    ("AddRef" nil RESTRICTED)
    ("CreateEventProc" (("EventName" STR) ("ObjectName" STR)) NORMAL)
    ("DeleteLines" (("StartLine" I4) ("Count" I4 OPTIONAL)) NORMAL)
    ("Find" (("Target" STR) ("StartLine" I4) ("StartColumn" I4) ("EndLine" I4) ("EndColumn" I4) ("WholeWord" BOOL OPTIONAL) ("MatchCase" BOOL OPTIONAL) ("PatternSearch" BOOL OPTIONAL)) NORMAL)
    ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)) RESTRICTED)
    ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) RESTRICTED)
    ("GetTypeInfoCount" (("pctinfo" UINT)) RESTRICTED)
    ("InsertLines" (("Line" I4) ("String" STR)) NORMAL)
    ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" variant) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) RESTRICTED)
    ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) RESTRICTED)
    ("Release" nil RESTRICTED)
    ("ReplaceLine" (("Line" I4) ("String" STR)) NORMAL)


Wanders off, rubbing hands, laughing maniacally ...


Hmm.   A LISP routine that can write VBA code?   Verrrrry Interesting.
I can already see how this could replace some of my VBA add-ins already.


Great Work Michael.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: daron on November 13, 2007, 08:51:51 AM
For anyone just joining this thread, the questions --

1. What version of Windows?
2. What version of AutoCAD?
3. Have you ever run the VBAIDE?
4. If found, what path on your machine hosts tlbinf32.dll?
5. Do you have Visual Studio 6 installed on an active drive?

:)

PS: Thanks to latest folks: CAB, Daniel and Steve.
tlitest
Better write a better _FindDLL MP!
1. XP Pro
2. 2006
3. Not on this machine
4. No.
5. No.
Ran vbaide and in acad typed tlitest with the same results.
Guess that answers that.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 03:18:31 PM
There are many reasons why exploiting tlbinf32.dll is beneficial to me (and why I freaked when I first recognized I could abuse it from lisp). The following represents but one way I'll be using said ability.

In the past when interogating objects I used a combination of atoms-family harvesting and brute force interrogation, the latter which involved compiling and maintaining lists of property and method names for anything non vanilla, like AutoPlant structural etc.

Now it can be done fully dynamically.

Red highlighting was done quickly (read "might have missed one or two") to give you idea of the breadth of this:

====================================Object====================================

<IKs_ComShape 2130572120> (13/27 of <IAcadModelSpace 2130554104>)

==================================Properties==================================

Application              <IAcadApplication>
AreaClassName            
Color                    256
CrossSectionCatalog      CISC_W.DBF
CrossSectionName         W200X46
CutPlaneCount            0
Database                 <IAcadDatabase>
DetailCutCount           0
DisplayClassName         
Document                 <IAcadDocument>
EntityName               Ks_Shape
EntityType               <Null Object, Reference or Value>
FacetCount               0
FamilyClassName         
Handle                   133
HasExtensionDictionary   :vlax-false
HasTrueId                0
Height                   203.0
HoleFieldCount           0
Hyperlinks               <IAcadHyperlinks>
InsertOffsetX            0.0
InsertOffsetY            -101.5
InsertPoint              (0.0 12000.0 5000.0) <SafeArray>
IsReferenceManual        :vlax-false
IsWeldedIShape           :vlax-false
ItemNumber                
Layer                    PS_SHAPE
Length                   5000.0
Linetype                 ByLayer
LinetypeScale            1.0
Lineweight               -1
LogicalLinkCount         0
Material                 165
Name                     W200x46
Note1                   
Note2                    
ObjectID                 2130572120
ObjectName               Ks_Shape
OriginPosNumber         
OutletCount              0
OwnerID                  2130554104
PartOrigin               -1
PlotStyleName            ByLayer
PolyCutCount             0
PosNumber                1
ShipNumber               
SubbodyCount             0
TotalCount               8
TrueColor                <IAcadAcCmColor>
Visible                  :vlax-true
WeightCenter             (6.78547e-005 11898.5 2500.0) <SafeArray>
Width                    203.0
XAxis                    (-1.0 0.0 0.0) <SafeArray>
YAxis                    (0.0 1.0 0.0) <SafeArray>

===================================Methods====================================

AddRef                   nil RESTRICTED
AddReferenceLine         (("StartPoint" variant) ("EndPoint" variant)) NORMAL
AddSlopedEdgeAt          (("Point" variant)) NORMAL
ArrayPolar               (("NumberOfObjects" INT) ("AngleToFill" REAL) ("C ...
ArrayRectangular         (("NumberOfRows" INT) ("NumberOfColumns" INT) ("N ...
ClearReferenceOffset     nil NORMAL
ClearReferencePoints     nil NORMAL
Copy                     nil NORMAL
Delete                   nil NORMAL
DeleteSlopeFlangeSegment (("ThickIndex" INT)) NORMAL
DeleteSlopedEdgeAt       (("Point" variant)) NORMAL
Erase                    nil NORMAL
GetAnalysisIsChanged     (("Value" BOOL)) NORMAL
GetAnalysisIsConnected   (("Value" BOOL)) NORMAL
GetAnalysisIsProtected   (("Value" BOOL)) NORMAL
GetAnalysisLine          (("StartPoint" variant) ("EndPoint" variant)) NORMAL
GetAnalysisVectors       (("StartVector" variant) ("EndVector" variant))  ...
GetAreaClass             (("ClassIndex" INT)) NORMAL
GetBoundingBox           (("MinPoint" variant) ("MaxPoint" variant)) NORMAL
GetDirection             nil NORMAL
GetDisplayClass          (("ClassIndex" INT)) NORMAL
GetEndpointTo            (("ReferencePoint" variant)) NORMAL
GetEndsideTo             (("ReferencePoint" variant)) NORMAL
GetExtensionDictionary   nil NORMAL
GetFamilyClass           (("ClassIndex" INT)) NORMAL
GetIDsOfNames            (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ...
GetInsertUcs             (("vMatrix" variant)) NORMAL
GetLengthAddition        nil NORMAL
GetMidLine               (("MidLineStart" variant) ("MidLineEnd" variant)) ...
GetMidLineUcs            (("vMatrix" variant)) NORMAL
GetReferenceLine         (("StartPoint" variant) ("EndPoint" variant)) NOR...
GetReferenceOffset       (("Dx" REAL) ("Dy" REAL)) NORMAL
GetReferencePoints       (("Point1" variant) ("Point2" variant)) NORMAL
GetSlope                 nil NORMAL
GetSlopePolygons         (("WebPolygon" EMPTY) ("LowerPolygon" EMPTY) ("Up...
GetSlopedHeightAt        (("Point" variant) ("StartPoint" variant) ("EndPo...
GetTrueId                (("pVal" STR)) NORMAL
GetTypeInfo              (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) RE...
GetTypeInfoCount         (("pctinfo" UINT)) RESTRICTED
GetVertexAtPoint         (("Point" variant) ("Topside" BOOL) ("Vertex" INT)...
GetWeight                nil NORMAL
GetWeightLine            (("WeightLineStart" variant) ("WeightLineEnd" vari...
GetXData                 (("AppName" STR) ("XDataType" variant) ("XDataValu...
GetXOrientation          nil NORMAL
GetYOrientation          nil NORMAL
Highlight                (("HighlightFlag" BOOL)) NORMAL
IntersectWith            (("IntersectObject" DISPATCH) ("option" EMPTY)) NO...
Invoke                   (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) (...
Mirror                   (("Point1" variant) ("Point2" variant)) NORMAL
Mirror3D                 (("Point1" variant) ("Point2" variant) ("point3" v...
Move                     (("FromPoint" variant) ("ToPoint" variant)) NORMAL
QueryInterface           (("riid" EMPTY) ("ppvObj" VOID)) RESTRICTED
Release                  nil RESTRICTED
RetrieveGeometry         (("Geo" EMPTY)) NORMAL
Rotate                   (("BasePoint" variant) ("RotationAngle" REAL)) NORMAL
Rotate3D                 (("Point1" variant) ("Point2" variant) ("RotationA...
ScaleEntity              (("BasePoint" variant) ("ScaleFactor" REAL)) NORMAL
SetAnalysisIsChanged     (("Value" BOOL)) NORMAL
SetAnalysisIsConnected   (("Value" BOOL)) NORMAL
SetAnalysisIsProtected   (("Value" BOOL)) NORMAL
SetAnalysisLine          (("StartPoint" variant) ("EndPoint" variant)) NORMAL
SetAnalysisVectors       (("StartVector" variant) ("EndVector" variant)) NO...
SetAreaClass             (("ClassIndex" INT)) NORMAL
SetCrossSection          (("Name" STR) ("Catalog" STR)) NORMAL
SetDisplayClass          (("ClassIndex" INT)) NORMAL
SetFamilyClass           (("ClassIndex" INT)) NORMAL
SetLengthAddition        (("LengthAddition" REAL)) NORMAL
SetReferenceOffset       (("Dx" REAL) ("Dy" REAL)) NORMAL
SetShapeEnd              (("newShapeEnd" variant)) NORMAL
SetShapeMirror           nil NORMAL
SetShapeStart            (("newShapeStart" variant)) NORMAL
SetSlope                 (("Slope" REAL)) NORMAL
SetSlopeFlangeSegment    (("StartPoint" variant) ("EndPoint" variant) ("Wid...
SetSlopePolygons         (("LowerPolygon" EMPTY) ("UpperPolygon" EMPTY)) NO...
SetSlopedHeightAt        (("Position" variant) ("PickPoint" variant) ("Hei...
SetTrueId                (("newVal" STR)) NORMAL
SetXData                 (("XDataType" variant) ("XDataValue" variant)) NOR...
TransformBy              (("TransformationMatrix" variant)) NORMAL
Update                   nil NORMAL

===============================DXF Group Codes================================

-1    <Entity name: 7efdf358>
0     KS_SHAPE
330   <Entity name: 7efdacf8>
5     133
100   AcDbEntity
67    0
410   Model
8     PS_SHAPE


We use such property / method sheets to suppliment automation references for third party apps, which have traditionally been ummm, underweight and anemic. Having the ability to interrogate objects like this really helps when developing customization for non vanilla CADD apps.

la la la
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: JohnK on November 13, 2007, 04:47:44 PM
Sorry for my tardiness, i will read the post now.

Found CLSID: {8B21775E-717D-11CE-AB5B-D41203C10000}

1. What version of Windows?
        XP sp2
2. What version of AutoCAD?
        2008 MEP
3. Have you ever run the VBAIDE?
        Yes
4. What path on your machine hosts tlbinf32.dll?
        C:\WINDOWS\system32
5. Do you have Visual Studio 6 installed on an active drive?
        No
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: T.Willey on November 13, 2007, 05:04:30 PM
But it's actually probably easier to use OLEAUT32.DLL directly than it is to use TLBINF32.DLL.

I saw that Kerry (more than once) but it shares a worse fate than TLBINF32.DLL -- it's not on my pc even tho I've VB6 Enterprise installed. Figure that?

That one is installed on my pc.  Just thought you might want to know that bit of info.  :-)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 07:57:39 PM
Thank you for the updates John and Tim.

John's item 5 surprises me in light of item 0 and 4.

:)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 08:22:52 PM
For my friend Kerry ... if I'm not mistaken another thing about OLEAUT32.DLL is that is is (I'm guessing as I don't have it here) a regular system dll, that is, it's not an ActiveX (COM) dll.

So while it's accessible from VB/VBA (via declare statements as you would for any Win32 API call) it's not accessible directly from LISP. One would have to write an ActiveX (COM) wrapper to expose it to LISP, and hey -- there is one: TBLINF32.DLL; woot.

(As I pretend to understand it anyway).

:)

Edit: Meh, fixed dumb typos.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 13, 2007, 08:29:28 PM
[scurries]
.. nudge-note to self: investigate writing COM interfaces with C# ...
.. .. dust off COM and .NET Interoperability ~ Troelsen

[revert_to_Normal_dawdle]
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 08:31:15 PM
I'd truly be worried if there were a different reaction.

 :lmao:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 13, 2007, 08:42:37 PM

As you know, I'm not a VB devotee .. but I wonder what is installed from the redistribution packs for vb5 and vb6.
.. anyone have a manifest ?


Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 08:47:16 PM
The short circuited answer is that neither the vb runtimes and or the vb controls distribution host tlbinf32.dll.

An adjunct, I'm 99% sure that if one created a VB app that referenced tlbinf32.dll and then used the VB packager to create a setup program, the setup distribution would in fact include our friend.

I'll perform the above and report back ...
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 09:04:56 PM
... yep.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 13, 2007, 10:19:41 PM
(http://www.theswamp.org/screens/index.php?dir=KerryBrown/&file=SUCCINCT.png)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: JohnK on November 13, 2007, 10:29:48 PM
...
John's item 5 surprises me in light of item 0 and 4.

It does?! ...Wait, i just about to ask if i did something wrong when i think i understand why.

This could be the computer i used to rewrite a VB app some goof ball previous CAD mgr wrote. I think i used the trial version of VB5 or something (I can look tomorrow).

The reason i forgot is because im the guinea pig for trying out new computers for the jump to Revit and my latest got the blue-screen-o-death a few times so i had to go back a step or two.  Sorry for the confusion.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: JohnK on November 13, 2007, 10:33:55 PM
Okay Kerry, your last post confused dahell outa me. In my profile i turned off smiles, images, signatures, avatars, etc. and to me your last post is blank. ...yeah that got me pretty good.

*lol*
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Kerry on November 13, 2007, 10:43:08 PM
:-) and that is who's fault ??


you must miss so much .. sig's and avatars I can understand ..

and without smileys, how can you tell what peeps really mean ?
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 13, 2007, 11:18:13 PM
sig's and avatars I can understand

Hey hey hey -- I'll have you know avatar and signature selection is serious business.

{cough}

:loco:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: FengK on March 26, 2008, 01:17:10 PM
There is a help file from Microsoft for this tlbinf32.dll.
http://support.microsoft.com/kb/224331/en-us/
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: KewlToyZ on March 26, 2008, 01:59:03 PM
I have MEP 2008 as well. I wonder now, is this DLL where the Select Similiar option only available in MEP is wrapped up into????
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: taner on July 19, 2009, 02:15:03 AM
_GetPropertiesAndMethods

dear MP,

Can you post the codes of _GetPropertiesAndMethods ?

Thanks!
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: chlh_jd on October 14, 2014, 08:13:45 AM
Thanks MP for share it .
I used it in Win7 64Bit , Acad2011  , I can't found tlbinf32.dll  . how to do it ?
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: chlh_jd on October 14, 2014, 09:54:55 AM
After I download the "tlbinf32.dll" , it can be register OK , and found CLSID {8B21775D-717D-11CE-AB5B-D41203C10000} , it's value is "_TLIApplication" .
However can't be read by
Code: [Select]
(vl-registry-read
  (strcat
    "HKEY_CLASSES_ROOT\\"
    "TLI.TLIApplication\\"
    "CLSID"
    )
)

can be read by following code, and return "_TLIApplication"  , but can't creat-object by "(vlax-create-object "_TLIApplication")" or "(vlax-create-object "TLI.TLIApplication")" 
Code: [Select]
(vl-some '(lambda (x)
(vl-registry-read
  x)) ;_"Wow6432Node\\"
     (list
       (strcat
"HKEY_CLASSES_ROOT\\"
"TLI.TLIApplication\\"
"CLSID"
)
       "HKEY_CLASSES_ROOT\\Interface\\{8B21775D-717D-11CE-AB5B-D41203C10000}"
       )
     )
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: chlh_jd on October 16, 2014, 07:13:50 AM
After , execute cmd.exe by adminstractor , it can be register , and found TLI.TLIApplication CLSID , but can't be created in VLIDE yet .
I don't install VBA for ACAD2011 ,  is it the reason ?
And I has installed VBA for ACAD2015 , it can't be created too .
I found a simlar dll  --- VSTLBINF.DLL in OFFICE12 ,  are  they the same TLIApplication ?
Many thanks .
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: chlh_jd on October 20, 2014, 12:08:23 PM
I execute the cmd.exe as Administrator , and then register VSTLBF.DLL , it can be right  import and use in OFFICE12 , but no OK in VLIDE .
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Rod on November 07, 2014, 06:05:54 AM
Hi MP any chance of sharing _GetPropertiesAndMethods.
Looks like a really useful tool.

Thanks Rod
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Rod on November 08, 2014, 06:42:39 AM
Found more info at Topic "TLBINF32.DLL Upskirt" http://www.theswamp.org/index.php?topic=20003.0;all (http://www.theswamp.org/index.php?topic=20003.0;all)

But couldn't access through  (vlax-create-object "_TLIApplication") same as chlh_jd
I have been able to access through vlax-import-type-library but will have to investigate more when I get a chance.

Am I missing something couldn't actually find MPs code?
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 08, 2014, 10:07:49 AM
Hi Rod / all, sorry to report that tho I exploited the type lib thing for many years I abandoned utilities based on it due to licensing issues, unpredictable presence on computers and other annoyances.

I re-coded the whole thing using strictly lisp and dcl (which is what I had initially done many years ago, but was side tracked by the fact type lib would do 90% of the heavy lifting. A nod here to SomeCallMeDave who I believe was the first to suggest the use of tlbinf32 and sparked my interest in same).

I'm not ready to make it available publicly yet but I've been using my latest incarnation (reasonably stable) for about a year:

(http://i.imgur.com/5X80xxC.png)

For the curious, It basically harvests the atoms family (which is augmented via vlax-import-type-library so it's populated with MS Access, Pro Structures ... info) and then sledge hammer interrogates an object via vlax-property-available-p and vlax-method-applicable-p. Despite having to slog thru candidate properties and methods numbering ~ 1000 and 800 respectively it's quick.

An aside, collections, objects, handles, entity names, xdata handles, e.g. (1005 ". "2A"), etc. are all live, allowing me to click thru the object model labyrinth at will. Between the live links and the [Pick], [PickN] and [Handle] methods, and the command line which lets me pass enames, objects and handles there's little that can escape it's examination.

Sorry it's not ready for prime time now. I have been simply swamped at my latest job, little time for extra curricular tools like this and others in the cue.

For the impatient there's enough info above to code your own or if you prefer, to use the venerable arxdbg utility (google (http://www.google.com/?q=arxdbg+site:www.theswamp.org)).

Cheers.
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: ronjonp on November 08, 2014, 11:25:47 AM
Looks cool Michael  8)
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Lee Mac on November 08, 2014, 11:29:29 AM
Impressive work as always Michael.
The ® for read-only is a nice touch  :wink:
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: Rod on November 09, 2014, 03:10:00 AM
Ok no worries Michael.

Looks like a very impressive tool.
Especially useful for quick "I wonder if I could..." investigations with other software or type libraries.

I won't be writing my own code just yet but I appreciate the insight into how you went about it.
For now I will just use vlax-import-type-library and atoms-family
Title: Re: Interogate an object for its ActiveX properties and methods ...
Post by: MP on November 11, 2014, 06:43:47 PM
Thanks for your positive comments guys, encouraging. :)