# Win32ole, integer pointer parameter

**URL:** <https://www.ruby-forum.com/t/win32ole-integer-pointer-parameter/62849>\
**Category:** Ruby\
**Created:** [June 8, 2006, 7:00pm UTC](https://www.ruby-forum.com/t/win32ole-integer-pointer-parameter/62849 "2006-06-08T19:00:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Graham\_Ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@Graham\_Ford](https://www.ruby-forum.com/u/Graham_Ford)\
**Post date:** [June 8, 2006, 7:00pm UTC](https://www.ruby-forum.com/t/win32ole-integer-pointer-parameter/62849/1 "2006-06-08T19:00:37Z")

</div>

I am trying to call a COM DLL with Win32OLE, but I am running into an  
issue with passing an argument to the method call. The following works  
in Perl:

– begin Perl

use Win32::OLE;  
use Win32::OLE::Variant;

my $engine = Win32::OLE-\>new(‘X.X’) or die 'Cannot load engine DLL:  
'.$!;  
my $system = ‘C:\path\to\dir’;  
my $mode = 0;  
my $retVal = Variant(VT\_I4|VT\_BYREF, 0);  
my $rc;

$rc = $engine-\>Execute($system,$mode,$retVal);  
print "Return Val: ".$retVal;

– end Perl

In ruby I think it should look like this:

– begin Ruby

require ‘win32ole’  
engine = WIN32OLE.new(‘X.X’)

retVal = 1  
rc = 1

rc = engine.Execute(‘C:\path\to\dir’,0,retVal)

print "Return Code: ",retVal

– end Ruby

When I run the ruby code, the DLL executes and processes the directory,  
but I need to be able to get back the return value. Unlike in Perl,  
ruby doesn’t seem to be able to generate a variant object to be passed  
to the method call. The DLL expects an integer pointer for the third  
argument, COM signature VT\_I4|VT\_BYREF, but I’m at a loss as to how to  
properly pass this so I can retrieve the value after execution.

I’ve also tried olegen.rb to generate a ruby class for the DLL, but this

seems to have the same exact problem.

Thanks,  
Graham

---

<div class="post-metadata">

**Author:** ![Graham\_Ford](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/3bc359/32.png) [@Graham\_Ford](https://www.ruby-forum.com/u/Graham_Ford)\
**Post date:** [June 11, 2006, 1:53pm UTC](https://www.ruby-forum.com/t/win32ole-integer-pointer-parameter/62849/2 "2006-06-11T13:53:07Z")

</div>

Hello,

In message “win32ole, integer pointer parameter”  
on 06/06/09, “Graham Ford” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> rc = engine.Execute(‘C:\path\to\dir’,0,retVal)
> 
> print "Return Code: ",retVal

How about WIN32OLE::ARGV ?

print "Return Code: ", WIN32OLE::ARGV[2]

Regards,  
Masaki S.
