Win32::OLE, InternetExplorer, NewWindow, Events --- crashes

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

I'm working on an application that automates IE and needs to handle
IE's NewWindow2 event. The IE documentation for the event gives the
following stytax:

Private Sub object_NewWindow2( _ ByRef ppDisp As Object, _ ByRef Cancel
As Boolean)

When handling the event my perl code is entered with:

sub ie_events(){ my( $ie, $event, @args ) = @_;

In my handler I create a new IE object with:

my $ie = Win32::OLE->new( 'InternetExplorer.Application' );
Win32::OLE->WithEvents($ie, \&ie_events, 'DWebBrowserEvents2' );

Now my question. What is the proper way to set @args to return?

The code

$args[0]->Put( $ie ); $args[1]->Put( 0 );

Eventually leads to crashes. Given that the return should be a ppDisp
what is the proper way to return $ie?

Site Timeline