I am trying to pass a win32:OLE application handle to another thread but the memory location printed is incorrect. I have tried various methods such as using shared module and getactiveobject method but nothing worked. Any help is greatly appreciated. Please see the code below:
use Win32::OLE; use Win32::OLE::Variant; use Win32::OLE qw(EVENTS); #reuired to capture the events use Thread qw(:DEFAULT async yield); my $RQCC = Win32::OLE->new("Excel.Application") || die "CreateObject: +$!"; print "MainProcess = $RQCC\n"; # Starting to monitor event queue my $EventQueueTread = Thread->new(\&MonitorEventQueue); system "pause"; return 1; sub MonitorEventQueue { my $Devicehandle=Win32::OLE->GetActiveObject('Excel.Application'); print "MonitorEventQueue = $Devicehandle\n"; system "pause"; }
I have the following PERL installed on my systems:
This is perl, v5.10.1 built for MSWin32-x86-multi-thread
(with 4 registered patches, see perl -V for more detail)
Copyright 1987-2009, Larry Wall
Binary build 1008 294165 provided by ActiveState http://www.ActiveState.com
Built Dec 9 2010 06:00:35
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |