himanshujain_60 has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Passing win32::0LE object handle to another thread
by BrowserUk (Patriarch) on Mar 17, 2011 at 02:21 UTC | |
by himanshujain_60 (Initiate) on Mar 18, 2011 at 18:46 UTC | |
by BrowserUk (Patriarch) on Mar 18, 2011 at 21:36 UTC | |
by himanshujain_60 (Initiate) on Mar 19, 2011 at 03:56 UTC |