For Programmers: Free Programming Magazines  


Home > Archive > PERL Beginners > June 2005 > A question about Win32::OLE. Really need you help!!!









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author A question about Win32::OLE. Really need you help!!!
J aperlh

2005-06-06, 3:56 am

A question about Win32::OLE. Really need you help!!!


There is a standalone executable written in C/C++.
What I am going to do is to write a perl script to call several
functions available in this executable.


From the following article, I thought the job is very easy.
=09#10 - Win32::OLE by Jan Dubois
=09The Perl Journal #10 - Win32::OLE by Jan Dubois
Just considering the executable as an OLE server, and the PERL script
as an OLE controller should be OK.


When I call the functions, most of them work well, for example:

=09my $app =3D Win32::OLE->new('AAA.BBB', 'Quit');

=09# call the function:
=09#=09BOOL GetPathname(BSTR* Pathname)

=09my $Pathname =3D Variant(VT_BSTR|VT_BYREF, '');
=09my $ret =3D $app->GetPathname($Pathname);


But, for the following function, I don't know that I should pass to
this funtion.
Array reference or something else?

=09# BOOL GetValues(BSTR* names, double* values, short number_of_names);

=09# (input)
=09#=09names: a list of names
=09#=09number_of_names: size of the array
=09# (output)
=09#=09values: a list of corresponding values,


I tried to pass array references to it, and something else, like the follow=
ing,
both failed with an error: Type Mismatch...

=09my $names =3D Variant(VT_BSTR|VT_ARRAY, 3);
=09my $values =3D Variant(VT_R8|VT_ARRAY, 3);

=09$names->Put( ['name1', 'name2', 'name3'] );
=09$values->Put( [0, 0, 0] )

=09my $ret =3D GetValues($names, $values, 3);


Do you guys have and idea about that?
What shold I pass to this function?
Is there any other way to do the same thing?

Any comments are appreciated.


BTW:
I know that if the OLE controller is in C language, things will be easier,
Pass the first element of the array to this function should be OK.
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com