Author Topic: TLBINF32.DLL Upskirt  (Read 14168 times)

0 Members and 1 Guest are viewing this topic.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
TLBINF32.DLL Upskirt
« on: November 16, 2007, 09:58:46 AM »
This is a one percent post (i.e. 99% of the peeps here won't be interested).

If one has a tool to expose the properties and methods (PAM) of arbitrary objects what's one of the first things one should do?

Use it to document the PAM of the tool used to expose said PAM. Ahhh, recursively beautiful, almost poetry you say, and perfect for a Friday.



#<VLA-OBJECT _TLIApplication 02d90b48> (vlax-create-object "TLI.TLIApplication")

    PROPERTIES

        (PROPERTY VALUE RETURNTYPE ACCESS VISIBILITY)

        ("InvokeLCID" 1024 I4 READWRITE NORMAL)
        ("ListBoxNotification" nil EMPTY READWRITE NORMAL)
        ("RecordField" "<Error: Invalid number of parameters>" VARIANT READWRITE NORMAL)
        ("ResolveAliases" -1 BOOL READWRITE NORMAL)

        Property(s) that take arguments:

            "RecordField" (("RecordVARIANT" VARIANT) ("FieldName" STR))

    METHODS

        (METHOD ARGUMENTS RETURNTYPE ACCESS)

        ("AddRef" nil UI4 RESTRICTED)
        ("ClassInfoFromObject" (("Object" UNKNOWN)) EMPTY NORMAL)
        ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4) ("rgdispid" I4)) VOID RESTRICTED)
        ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) VOID RESTRICTED)
        ("GetTypeInfoCount" (("pctinfo" UINT)) VOID RESTRICTED)
        ("InterfaceInfoFromObject" (("Object" DISPATCH)) EMPTY NORMAL)
        ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2) ("pdispparams" EMPTY) ("pvarResult" VARIANT) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) VOID RESTRICTED)
        ("InvokeHook" (("Object" DISPATCH) ("NameOrID" VARIANT) ("InvokeKind" EMPTY)
        ("ReverseArgList" UNKNOWN)) VARIANT NORMAL)
        ("InvokeHookArray" (("Object" DISPATCH) ("NameOrID" VARIANT) ("InvokeKind" EMPTY) ("ReverseArgList" UNKNOWN)) VARIANT NORMAL)
        ("InvokeHookArraySub" (("Object" DISPATCH) ("NameOrID" VARIANT) ("InvokeKind" EMPTY) ("ReverseArgList" UNKNOWN)) VOID NORMAL)
        ("InvokeHookSub" (("Object" DISPATCH) ("NameOrID" VARIANT) ("InvokeKind" EMPTY) ("ReverseArgList" UNKNOWN)) VOID NORMAL)
        ("InvokeID" (("Object" DISPATCH) ("Name" STR)) I4 NORMAL)
        ("Me" nil EMPTY NORMAL)
        ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) VOID RESTRICTED)
        ("Release" nil UI4 RESTRICTED)
        ("TypeInfoFromITypeInfo" (("ptinfo" UNKNOWN)) EMPTY NORMAL)
        ("TypeInfoFromRecordVARIANT" (("RecordVARIANT" VARIANT)) EMPTY NORMAL)
        ("TypeLibInfoFromFile" (("FileName" STR)) EMPTY NORMAL)
        ("TypeLibInfoFromITypeLib" (("pITypeLib" UNKNOWN)) EMPTY NORMAL)
        ("TypeLibInfoFromRegistry" (("TypeLibGuid" STR) ("MajorVersion" I2)
        ("MinorVersion" I2) ("LCID" I4)) EMPTY NORMAL)
        ("_placeholder_destructor" nil VOID RESTRICTED)



#<VLA-OBJECT _SearchHelper 02d99708> (vlax-create-object "TLI.SearchHelper")

    PROPERTIES

        (PROPERTY VALUE RETURNTYPE ACCESS VISIBILITY)

        ("CheckHaveMatch" "<Error: Invalid number of parameters>" BOOL READONLY NORMAL)
        ("Init" "<Error: Invalid number of parameters>" VOID READONLY HIDDEN)

        Property(s) that take arguments:

            "CheckHaveMatch" (("Name" STR))
            "Init" (("SysKind" EMPTY) ("LCID" I4) ("GrowSize" I2 OPTIONAL))

    METHODS

        (METHOD ARGUMENTS RETURNTYPE ACCESS)

        ("AddRef" nil UI4 RESTRICTED)
        ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4)
        ("rgdispid" I4)) VOID RESTRICTED)
        ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) VOID RESTRICTED)
        ("GetTypeInfoCount" (("pctinfo" UINT)) VOID RESTRICTED)
        ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2)
        ("pdispparams" EMPTY) ("pvarResult" VARIANT) ("pexcepinfo" EMPTY) ("puArgErr"UINT)) VOID RESTRICTED)
        ("Me" nil EMPTY NORMAL)
        ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) VOID RESTRICTED)
        ("Release" nil UI4 RESTRICTED)
        ("_OldInit" nil VOID NORMAL)
        ("_placeholder_destructor" nil VOID RESTRICTED)



#<VLA-OBJECT _TypeLibInfo 02d90b78> (vlax-create-object "TLI.TypeLibInfo")

    PROPERTIES

        (PROPERTY VALUE RETURNTYPE ACCESS VISIBILITY)

        ("AppObjString" "" STR READWRITE NORMAL)
        ("AttributeMask" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I2 READONLY NORMAL)
        ("AttributeStrings" "<Error: Invalid number of parameters>" I2 READONLY NORMAL)
        ("BestEquivalentType" "<Error: Invalid number of parameters>" STR READONLY NORMAL)
        ("CoClasses" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("Constants" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("ContainingFile" "" STR READWRITE NORMAL)
        ("CustomDataCollection" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("Declarations" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("GUID" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" STR READONLY NORMAL)
        ("GetTypeInfo" "<Error: Invalid number of parameters>" EMPTY READONLY NORMAL)
        ("GetTypeInfoNumber" "<Error: Invalid number of parameters>" I2 READONLY NORMAL)
        ("GetTypeKind" "<Error: Invalid number of parameters>" EMPTY READONLY NORMAL)
        ("HelpContext" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I4 READONLY NORMAL)
        ("HelpFile" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" STR READONLY NORMAL)
        ("HelpString" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" STR READONLY NORMAL)
        ("HelpStringContext" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I4 READONLY NORMAL)
        ("HelpStringDll" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" STR READONLY NORMAL)
        ("ITypeLib" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" UNKNOWN READWRITE HIDDEN)
        ("Interfaces" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("IntrinsicAliases" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("LCID" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I4 READONLY NORMAL)
        ("LibNum" 0 I2 READWRITE NORMAL)
        ("MajorVersion" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I2 READONLY NORMAL)
        ("MinorVersion" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I2 READONLY NORMAL)
        ("Name" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" STR READONLY NORMAL)
        ("Records" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("SearchDefault" 239 EMPTY READWRITE NORMAL)
        ("ShowLibName" 0 BOOL READWRITE NORMAL)
        ("SysKind" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("TypeInfoCount" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" I2 READONLY NORMAL)
        ("TypeInfos" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("Unions" "<Error: TLI: No current typelib.  Use the ContainingFile property or LoadRegTypeLib method to load a current typelib.>" EMPTY READONLY NORMAL)
        ("_OldGetTypeKind" "<Error: Member not found>" VOID READONLY NORMAL)
        ("_OldHelpString" "<Error: Member not found>" VOID READONLY NORMAL)
        ("_OldSysKind" "<Error: Member not found>" VOID READONLY NORMAL)

        Property(s) that take arguments:

            "AttributeStrings" (("AttributeArray" UNKNOWN))
            "GetTypeInfo" (("Index" VARIANT))
            "GetTypeInfoNumber" (("Name" STR))
            "GetTypeKind" (("TypeInfoNumber" I2))
            "HelpString" (("LCID" I4 OPTIONAL))
            "HelpStringDll" (("LCID" I4 OPTIONAL))
            "BestEquivalentType" (("TypeInfoName" STR))

    METHODS

        (METHOD ARGUMENTS RETURNTYPE ACCESS)

        ("AddRef" nil UI4 RESTRICTED)
        ("AddTypes" (("TypeInfoNumbers" UNKNOWN) ("StartResults" EMPTY OPTIONAL)
        ("SearchType" EMPTY OPTIONAL) ("Sort" BOOL OPTIONAL)) EMPTY NORMAL)
        ("AddTypesDirect" (("TypeInfoNumbers" UNKNOWN) ("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL)) I2 NORMAL)
        ("CaseMemberName" (("bstrName" STR) ("SearchType" EMPTY OPTIONAL)) BOOL NORMAL)
        ("CaseTypeName" (("bstrName" STR) ("SearchType" EMPTY OPTIONAL)) EMPTY NORMAL)
        ("FreeSearchCriteria" nil VOID NORMAL)
        ("GetIDsOfNames" (("riid" EMPTY) ("rgszNames" I1) ("cNames" UINT) ("lcid" UI4)
        ("rgdispid" I4)) VOID RESTRICTED)
        ("GetMemberInfo" (("SearchData" I4) ("InvokeKinds" EMPTY OPTIONAL) ("MemberId" I4 OPTIONAL) ("MemberName" STR OPTIONAL)) EMPTY NORMAL)
        ("GetMembers" (("SearchData" I4) ("ShowUnderscore" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetMembersDirect" (("SearchData" I4) ("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("ItemDataType" EMPTY OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) I2 NORMAL)
        ("GetMembersWithSubString" (("SubString" STR) ("StartResults" EMPTY OPTIONAL)
        ("SearchType" EMPTY OPTIONAL) ("SearchMiddle" BOOL OPTIONAL) ("Helper" EMPTY OPTIONAL) ("Sort" BOOL OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetMembersWithSubStringDirect" (("SubString" STR) ("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL) ("SearchMiddle" BOOL OPTIONAL)
        ("Helper" EMPTY OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) I2 NORMAL)
        ("GetMembersWithSubStringEx" (("SubString" STR) ("InvokeGroupings" ARRAY)
        ("StartResults" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL) ("SearchMiddle" BOOL OPTIONAL) ("Sort" BOOL OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetTypeInfo" (("itinfo" UINT) ("lcid" UI4) ("pptinfo" VOID)) VOID RESTRICTED)
        ("GetTypeInfoCount" (("pctinfo" UINT)) VOID RESTRICTED)
        ("GetTypes" (("StartResults" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL)
        ("Sort" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetTypesDirect" (("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL)) I2 NORMAL)
        ("GetTypesWithMember" (("MemberName" STR) ("StartResults" EMPTY OPTIONAL)
        ("SearchType" EMPTY OPTIONAL) ("Sort" BOOL OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetTypesWithMemberDirect" (("MemberName" STR) ("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) I2 NORMAL)
        ("GetTypesWithMemberEx" (("MemberName" STR) ("InvokeKind" EMPTY)
        ("StartResults" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL) ("Sort" BOOL OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetTypesWithSubString" (("SubString" STR) ("StartResults" EMPTY OPTIONAL)
        ("SearchType" EMPTY OPTIONAL) ("SearchMiddle" BOOL OPTIONAL) ("Sort" BOOL OPTIONAL)) EMPTY NORMAL)
        ("GetTypesWithSubStringDirect" (("SubString" STR) ("hWnd" INT) ("WindowType" EMPTY OPTIONAL) ("SearchType" EMPTY OPTIONAL) ("SearchMiddle" BOOL OPTIONAL)) I2 NORMAL)
        ("Invoke" (("dispidMember" I4) ("riid" EMPTY) ("lcid" UI4) ("wFlags" UI2)
        ("pdispparams" EMPTY) ("pvarResult" VARIANT) ("pexcepinfo" EMPTY) ("puArgErr" UINT)) VOID RESTRICTED)
        ("IsSameLibrary" (("CheckLib" EMPTY)) BOOL NORMAL)
        ("LoadRegTypeLib" (("TypeLibGuid" STR) ("MajorVersion" I2) ("MinorVersion" I2)
        ("LCID" I4)) VOID NORMAL)
        ("MakeSearchData" (("TypeInfoName" STR) ("SearchType" EMPTY OPTIONAL)) I4 NORMAL)
        ("Me" nil EMPTY NORMAL)
        ("QueryInterface" (("riid" EMPTY) ("ppvObj" VOID)) VOID RESTRICTED)
        ("Register" (("HelpDir" STR OPTIONAL)) VOID NORMAL)
        ("Release" nil UI4 RESTRICTED)
        ("ResetSearchCriteria" (("TypeFilter" EMPTY OPTIONAL) ("IncludeEmptyTypes" BOOL OPTIONAL) ("ShowUnderscore" BOOL OPTIONAL)) VOID NORMAL)
        ("SetMemberFilters" (("FuncFilter" EMPTY OPTIONAL) ("VarFilter" EMPTY OPTIONAL)) VOID NORMAL)
        ("UnRegister" nil VOID NORMAL)
        ("_OldAddClassTypeToList" nil VOID RESTRICTED)
        ("_OldCaseMemberName" nil VOID RESTRICTED)
        ("_OldCaseTypeName" nil VOID RESTRICTED)
        ("_OldFillMemberList" nil VOID RESTRICTED)
        ("_OldFillTypesCombo" nil VOID RESTRICTED)
        ("_OldFillTypesList" nil VOID RESTRICTED)
        ("_OldGetMembersWithSubString" nil VOID RESTRICTED)
        ("_OldGetTypesWithMember" nil VOID RESTRICTED)
        ("_OldGetTypesWithSubString" nil VOID RESTRICTED)
        ("_OldResetSearchCriteria" nil VOID RESTRICTED)
        ("_placeholder_destructor" nil VOID RESTRICTED)



Now you have the knowledge to do everything I'm doing.

:)
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

deegeecees

  • Guest
Re: TLBINF32.DLL Upskirt
« Reply #1 on: November 16, 2007, 10:00:30 AM »
Dude, you scare me sometimes. :)

Maverick®

  • Seagull
  • Posts: 14778
Re: TLBINF32.DLL Upskirt
« Reply #2 on: November 16, 2007, 10:01:55 AM »
Phhhhht!

Title tease!!  :pissed:

mkweaver

  • Bull Frog
  • Posts: 352
Re: TLBINF32.DLL Upskirt
« Reply #3 on: November 16, 2007, 10:46:36 AM »
This is a one percent post (i.e. 99% of the peeps here won't be interested).

If one has a tool to expose the properties and methods (PAM) of arbitrary objects what's one of the first things one should do?

Use it to document the PAM of the tool used to expose said PAM. Ahhh, recursively beautiful, almost poetry you say, and perfect for a Friday.

... snip ...

Now you have the knowledge to do everything I'm doing.

:)

LOL  I love it!

T.Willey

  • Needs a day job
  • Posts: 5251
Re: TLBINF32.DLL Upskirt
« Reply #4 on: November 16, 2007, 11:08:36 AM »
With a tool like this, then who knows what trouble a Lisper could get into.  What program couldn't one automate from Acad?  Makes one think......

Nice work Michael!
Tim

I don't want to ' end-up ', I want to ' become '. - Me

Please think about donating if this post helped you.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #5 on: November 16, 2007, 08:12:14 PM »
Thanks for the kindly comments guys!

Nice work Michael!

Thank you Tim.

LOL I love it!

Glad to hear Mike. :)

Phhhhht!

Title tease!!

Ha ha, got a "civilian" to look, lol.   :evil:

Dude, you scare me sometimes.

{shrugs}  :lol:
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Kerry

  • Mesozoic relic
  • Seagull
  • Posts: 11654
  • class keyThumper<T>:ILazy<T>
Re: TLBINF32.DLL Upskirt
« Reply #6 on: November 16, 2007, 08:17:44 PM »

talk about exposing PAM and 'UpSkirts' raises the interest level a little higher than 1:100 methinks :lol:
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #7 on: November 16, 2007, 09:03:55 PM »
talk about exposing PAM and 'UpSkirts' raises the interest level a little higher than 1:100 methinks :lol:

I imagine it's but a matter of time before Se7en admonishes me for said title.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

It's Alive!

  • Retired
  • Needs a day job
  • Posts: 8659
  • AKA Daniel
Re: TLBINF32.DLL Upskirt
« Reply #8 on: November 16, 2007, 09:47:29 PM »

talk about exposing PAM and 'UpSkirts' raises the interest level a little higher than 1:100 methinks :lol:

 :lmao:

JohnK

  • Administrator
  • Seagull
  • Posts: 10603
Re: TLBINF32.DLL Upskirt
« Reply #9 on: November 17, 2007, 11:41:08 AM »
This is a one percent post (i.e. 99% of the peeps here won't be interested).

If one has a tool to expose the properties and methods (PAM) of arbitrary objects what's one of the first things one should do?

Use it to document the PAM of the tool used to expose said PAM. Ahhh, recursively beautiful, almost poetry you say, and perfect for a Friday.

<snip>

Now you have the knowledge to do everything I'm doing.

:)

Joke: What has two thumbs and doesn't quite understand this? .... *Both thumbs up and in a jabbing motion points to chest* Dis guy!

No, I think this is a one percent post because 99% wont understand it; needless to say im a bit confused. I googled the .dll in question and started to understand its purposes but ... phew! I got more reading to do before I can toss out a "cool stuff mang!". My head is spinning. No, I take that back because I think I understand enough about the general concept --building your own lib browser (Its the start of a "big board" from "Snow Crash"!!)-- so I think i can comfortably throw out a "Dude!! Your good!". AND I think I can also appreciate the thought process involved with the start of all this so I can also toss out a "Ah huh?! Okay, right. ...You know your way up there and im still way down here right?!".

Funny how you say that I now have the knowledge to do everything your doing cause that couldn't be further from the truth. This post might as well be in hex right now.

Im gonna go away now cause my head hurts a little.

OBTW, you can get a free pass from the title admonishing this time, because you confused and awed me enough to have Jenny ask "what's wrong?" (I guess I was staring or something.).
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #10 on: November 17, 2007, 12:29:26 PM »
Hi John. I didn't mean to confuse anyone; it was posted for anyone who had been following my attempts to exploit the interrogation abilities of TLBINF32.DLL AND have an interest in TBLINF32.DLL's, errrm, under carriage. Perhaps it was too presumptuous of me to assume folks were tracking said progress on this task, so I'll try to recap without writing a novel.

Our friend mkweaver started a thread in the VBA forum titled "List of object properties to an array?", where he inquired how one might dynamically determine all the properties for an object and place them into an array.

Our friend SomeCallMeDave chimed in with this great post and said one could use TLBINF32.DLL to interrogate an object to dynamically determine its properties.

Yours truly recognized this could also be done from lisp, promptly soiled his self, and went off laughing maniacally into the lab to see what he could concoct.

After a lot of experimenting, sledge hammer techniques and throw away code, I produced a couple of routines that while not ready for prime time, faithfully interrogated objects and dynamically revealed properties and methods, complete with argument names and data types. Having achieved this I thought the logical thing I should do for the community is document TLBINF32.DLL from a LISPer's perspective so those scant individuals who might be interested in following this particular tangent on their own might be armed with a road map; something I didn't have when I started, and with which I could have recovered a long weekend of frenzied effort had I had it at the ready.

If it's of no value to you just ignore it, like I said, it's a 1% post.

:P



Edit: Meh, fixed typos and links.
« Last Edit: November 17, 2007, 12:41:12 PM by MP »
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

JohnK

  • Administrator
  • Seagull
  • Posts: 10603
Re: TLBINF32.DLL Upskirt
« Reply #11 on: November 17, 2007, 12:53:27 PM »
Figure of speech; I think its great. I just have a lot of reading to do. I can see this being of great value when and if i ever get around to trying to work with the AutoCAD MEP Aec objects again. I imagine this will be used in my Revit programing as well.

Your post was fine (just over my head right at this moment). I will not ignore it; i will peruse it and will report back with any of my code as usual.

Now i have to go get a new coffee grinder cause mine craped out this morning and im a bit fuzzy headed still so i will do some research later today.

Later,
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #12 on: November 17, 2007, 01:05:42 PM »
I can see this being of great value when and if i ever get around to trying to work with the AutoCAD MEP Aec objects again.

If running outside of MEP Aec. et al make sure you have the applicable object enablers loaded. Otherwise you'll just have zombies which won't ante up much.

I imagine this will be used in my Revit programing as well.

Can't comment on Revit, but If you have successes interrogating Revit objects using TLBINF32.DLL bet there would be a lot of folks interested in seeing your implementation.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

JohnK

  • Administrator
  • Seagull
  • Posts: 10603
Re: TLBINF32.DLL Upskirt
« Reply #13 on: November 17, 2007, 03:33:49 PM »
So far all the stuff ive done for MEP Aec stuff ante up to be garbage so i will take anything i get. Heck, ive even resorted to try building the ent lists and trying entmod (and such) with plain autolisp  ... Ive all but given up on MEP objects.

Yeah, Revit programing is my next big thing to tackle. Well C# is, but i wanted to do that right and take all the into courses Microsoft has to offer first so that kinda thing might be at least a few months away.
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

Keith™

  • Villiage Idiot
  • Seagull
  • Posts: 16899
  • Superior Stupidity at its best
Re: TLBINF32.DLL Upskirt
« Reply #14 on: November 17, 2007, 07:43:59 PM »
Michael, I have been using the TBLINF32.DLL for some time now to get the information I needed to dynamically register and unregister COM objects for an application I created. Essentially the code I have written using this little gem allows my application to load other COM application into its memory segment and utilize said application as an add-in, much like the add-ins in Word and other applications with the ability to have users create add-ins. In my application, the user is free to utilize any language they wish that can be compiled into a DLL or EXE without regard to my application. It gives new meaning to interoperability. Surely there is more than 1% that will make use of this tidbit of information.

I hadn't thought of utilizing it in lisp ... cool ...thanks for sharing.
Proud provider of opinion and arrogance since November 22, 2003 at 09:35:31 am
CadJockey Militia Field Marshal

Find me on https://parler.com @kblackie