holandes777 has asked for the wisdom of the Perl Monks concerning the following question:

I tried to get educated before asking this question:
 
I am attempting to use Win32::OLE to do this. I understand that Win32::OLE uses IDispatch to make the link. Also, I know the dll in question works from VBscript (becasue another programmer showed me).
 
I registered the DLL as follows: regsvr32 mydll.dll. Seems like that went well.
 
However, when I:
use Win32::OLE; $wd = Win32::OLE->GetObject("mydll") || die "Unable to load Win32::OLE" . Win32::OLE->LastError;
or
use Win32::OLE; $wd = Win32::OLE->GetObject("mydll.dll") || die "Unable to load Win32::OLE" . Win32::OLE->LastError;
I get: error 0x800401e4: "Invalid syntax"
 
However when I try:
use Win32::OLE; $wd = Win32::OLE->GetObject("c:\\windows\\system32\\mydll.dll") || die "Unable to load Win32::OLE" . Win32::OLE->LastError; us +e Win32::OLE;
I get: error 0x800401e6: "Bad extension for file"
 
I have googled every conceivable permutation of "ADO OLE ActiveX perl how to howto manual tutorial Win32::OLE Win-32", etc. and all I get back is examples of how to do something in Excel. I also looked at ActiveX on PerlMonks supersearch and dug around at Microsoft and a few other places.
 
What I am looking for is a step by step guide that will allow me to attach to the dll and converse with it.
 
Any pointers to good resources? (even if it's a book I need to buy!)
 
Thanks!

Replies are listed 'Best First'.
Re: Establishing a reference with a COM ActiveX component
by syphilis (Archbishop) on May 11, 2007 at 07:34 UTC
    What I am looking for is a step by step guide that will allow me to attach to the dll and converse with it

    If you're simply trying to access the functionality of mydll, that's usually done by using either Win32::API or Inline::C (if you have a C compiler). I prefer Inline::C. It comes with an excellent cookbook (accessible as perldoc Inline::C-Cookbook) which includes an example of how to access user32.dll's MessageBoxA() function. Win32::API has reasonable documentation, too.

    I've never used Win32::OLE, and don't really understand its application - so perhaps I'm missing the point. I did try running your code wrt user32.dll and got precisely the same errors as you.

    Cheers,
    Rob