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

0 Members and 1 Guest are viewing this topic.

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #15 on: November 18, 2007, 10:48:41 AM »
Interesting stuff Keith!

How does using tlbinf32.dll for registering / unregistering dlls differ compared to regsvr32.exe, aside from the latter being command line based?

Also, whenever one creates and instance of classes hosted in activex (com) dlls they are run in the parent's memory space (i.e. in process servers) so how does invoking classes thru tlbinf32.dll differ?

Thanks for the interesting comments and nod Keith.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Keith™

  • Villiage Idiot
  • Seagull
  • Posts: 16899
  • Superior Stupidity at its best
Re: TLBINF32.DLL Upskirt
« Reply #16 on: November 19, 2007, 05:51:57 AM »
Interesting stuff Keith!

How does using tlbinf32.dll for registering / unregistering dlls differ compared to regsvr32.exe, aside from the latter being command line based?

As you are probably aware, not all classes can be registered using regsvr32.exe i.e you get that dreaded dll entry point not found error, so, using the tblinf32.dll, you can suss out just which type of COM application you have, and based upon the results register the dll appropriately.


Also, whenever one creates and instance of classes hosted in activex (com) dlls they are run in the parent's memory space (i.e. in process servers) so how does invoking classes thru tlbinf32.dll differ?

Thanks for the interesting comments and nod Keith.

Depending upon the way the class is invoked it may run out of process ... I have seen some really crazy stuff done ... anyway, by knowing exactly the type of class I am dealing with, I can use appropriate calling methods for each, thus ensuring the class runs in-process.
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

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #17 on: November 19, 2007, 09:50:48 AM »
As you are probably aware, not all classes can be registered using regsvr32.exe i.e you get that dreaded dll entry point not found error, so, using the tblinf32.dll, you can suss out just which type of COM application you have, and based upon the results register the dll appropriately.

Be interesting if you could share a small sample or even psuedo code.

Depending upon the way the class is invoked it may run out of process ... I have seen some really crazy stuff done ... anyway, by knowing exactly the type of class I am dealing with, I can use appropriate calling methods for each, thus ensuring the class runs in-process.

I must have the most horse blinder experience, because in all my years instanciating classes hosted in activex dlls I have never had one attempt to run out of process. Mind you, I never polled the system either to determine if an object was attempting to run out of process, so maybe I'm simply oblivious. Reflecting for a nano second ... yeah, the latter.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Keith™

  • Villiage Idiot
  • Seagull
  • Posts: 16899
  • Superior Stupidity at its best
Re: TLBINF32.DLL Upskirt
« Reply #18 on: November 19, 2007, 08:16:31 PM »
As you are probably aware, not all classes can be registered using regsvr32.exe i.e you get that dreaded dll entry point not found error, so, using the tblinf32.dll, you can suss out just which type of COM application you have, and based upon the results register the dll appropriately.

Be interesting if you could share a small sample or even psuedo code.

I'll look and see if I have anything I can post .. I am sure you appreciate since it was for a client, I must be very careful about posting code.

Depending upon the way the class is invoked it may run out of process ... I have seen some really crazy stuff done ... anyway, by knowing exactly the type of class I am dealing with, I can use appropriate calling methods for each, thus ensuring the class runs in-process.

I must have the most horse blinder experience, because in all my years instanciating classes hosted in activex dlls I have never had one attempt to run out of process. Mind you, I never polled the system either to determine if an object was attempting to run out of process, so maybe I'm simply oblivious. Reflecting for a nano second ... yeah, the latter.

Have you ever created an ActiveX EXE that uses classes that are only available to the executable i.e. MyClass.exe is the only program that can register the application class .. since ActiveX EXE programs are generally self registering, (at least the ones I have dealt with), and unregistering in some cases, it means that if you wish to register the class, you have to be able to execute the program ... if you execute the program, your options are limited as to how you can do that, such as calling the program using ShellExecute. To my knowledge, ShellExecute runs the new program in its own memory space, thus marshalling takes its toll on data gathering between the programs ... also sometimes you find an ActiveX exe that has been renamed to something else such as MyApp.dll or MyApp.dat. In those instances, the user must know what kind of program he is dealing with as regsvr32 does not work with ActiveX exes.

Ideally, everyone would follow the same methodology and we would be able to handle all classes the same, but until then, I'll have to utilize gathering the type library information from the file i.e. is it an application or dll? what are the exposed classes? shoot ... are there any exposed classes?

Is that a little bit clearer? Perhaps I am doing something unnecessary ... but it has always been my understanding that if you run an app using ShellExecute, then it runs in its own memory space ... maybe I am wrong ..
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

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: TLBINF32.DLL Upskirt
« Reply #19 on: November 19, 2007, 10:59:53 PM »
I'll look and see if I have anything I can post .. I am sure you appreciate since it was for a client, I must be very careful about posting code.

Have you ever created an ActiveX EXE that uses classes that are only available to the executable i.e. MyClass.exe is the only program that can register the application class .. since ActiveX EXE programs are generally self registering, (at least the ones I have dealt with), and unregistering in some cases, it means that if you wish to register the class, you have to be able to execute the program ... if you execute the program, your options are limited as to how you can do that, such as calling the program using ShellExecute. To my knowledge, ShellExecute runs the new program in its own memory space, thus marshalling takes its toll on data gathering between the programs ... also sometimes you find an ActiveX exe that has been renamed to something else such as MyApp.dll or MyApp.dat. In those instances, the user must know what kind of program he is dealing with as regsvr32 does not work with ActiveX exes.

Ideally, everyone would follow the same methodology and we would be able to handle all classes the same, but until then, I'll have to utilize gathering the type library information from the file i.e. is it an application or dll? what are the exposed classes? shoot ... are there any exposed classes?

Is that a little bit clearer? Perhaps I am doing something unnecessary ... but it has always been my understanding that if you run an app using ShellExecute, then it runs in its own memory space ... maybe I am wrong ..

I can't count how many ActiveX dlls and traditional executables (that may reference ActiveX dlls) I've authored over the years but I don't write ActiveX executables (or documents for that matter). This is largely because the applications I've authored have to be as fast as possible (but they say, then why VB?) and out of process ActiveX servers (exes) are typically slower than their equivalent in process servers. While it's certainly not fair to throw the baby out with the wash I can't think of any of my ActiveX dll solutions that would have benefited from being external, but again, I'll make reference back to my horse blinder comment in the preceding.

Having said all that it is an interesting and important discussion; the merits of what you've done are quite significant, even to me, because even tho I don't author out of process servers, I do use them. For example, Word, Excel, IExplore etc. can all serve as out of process servers. Also, the discussion made me revisit the merits of the different kinds of ActiveX servers, something I've not done since the early 90s.

Interesting stuff Keith, you never disappoint -- thanks.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

hermanm

  • Guest
Re: TLBINF32.DLL Upskirt
« Reply #20 on: December 31, 2007, 10:28:11 PM »
Or, you could read the manufacturer's documentation, if you don't mind "translating" from VB to LISP.

http://support.microsoft.com/kb/224331

You might also be interested in this link:

http://www.jsware.net/jsware/vbcode.php3

d/l tlbread.zip & have a look at TLB Readme.txt contained therein

thx for heads up on this topic:)

Atook

  • Swamp Rat
  • Posts: 1029
  • AKA Tim
Re: TLBINF32.DLL Upskirt
« Reply #21 on: April 25, 2009, 01:51:59 AM »
I'm no LISP guy, but I'm interested in creating an ActiveX dll that exposes and object model that's got all the hydraulic object smarts built into it. LISP would just be used to populate the model, run a couple methods, then retrieve the calculated data.

It's a little late, and I'm a bit fuzzy, but this looks like precisely what I'm looking for. Using the vlax lisp calls, is it possible to essentially make LISP object aware to any ActiveX dll?

Or is there a better/easier way to make LISP object aware?

Sorry to bring this thread back from the dead..

I gotta say though, the 1% here kicks ass. :)