note
PodMaster
Did you try looking into the "WithEvents" method?
<strike>
I gave it a shot in the dark, but it didn't work,
but then again I don't work with Win32::OLE at all so maybe I missed something
</strike>
That's what you need ;)(i took the while loop out and replaced it with a call to MessageLoop(), otherwise you can't process messages ie events )
<CODE>
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE qw[ EVENTS ];
use Win32::OLE::Variant;
#Win32::OLE->Initialize(Win32::OLE::COINIT_MULTITHREADED);
#Win32::OLE::COINIT_OLEINITIALIZE
my $Agent = Win32::OLE->new('Agent.Control.2');
$Agent->{Connected} = Variant(VT_BOOL, 1);
$Agent->Characters->Load('Merlin','Merlin.acs');
Win32::OLE->WithEvents($Agent, \&Event);
my $Char = $Agent->Characters('Merlin');
$Char->Commands->Add('Exit','E&xit');
$Char->Show;
$Char->Speak('Sleeping...');
Win32::OLE->MessageLoop();
sub Event {
my ($Obj,$Event,@Args) = @_;
use Data::Dumper;
print "Event triggered: '$Event' => \n".Dumper(\@Args);
exit(0) if ref $Args[0] and $Args[0]->{Name} eq 'Exit';
}
__END__
Event triggered: 'Show' =>
$VAR1 = [
'Merlin',
4
];
Event triggered: 'ActivateInput' =>
$VAR1 = [
'Merlin'
];
Event triggered: 'BalloonShow' =>
$VAR1 = [
'Merlin'
];
Event triggered: 'Click' =>
$VAR1 = [
'Merlin',
2,
0,
60,
92
];
Event triggered: 'BalloonHide' =>
$VAR1 = [
'Merlin'
];
Event triggered: 'Command' =>
$VAR1 = [
bless( {
'Count' => 1,
'Name' => 'Exit',
'CharacterID' => 'Merlin',
'Confidence' => 100,
'Voice' => '',
'Alt1Name' => '',
'Alt1Confidence' => 0,
'Alt1Voice' => '',
'Alt2Name' => '',
'Alt2Confidence' => 0,
'Alt2Voice' => ''
}, 'Win32::OLE' )
];
</CODE>
<div class="pmsig"><div class="pmsig-107642"><p><table border=0 cellpadding=1 cellspacing=0 width="100%"><tr><td colspan=2 bgcolor="#FFF0FF"><small><font color="black"><a href="http://perlmonks.org/index.pl?node=MJD"><b><font color="#0F0FAA">MJD</font></b></a> <a href="http://www.perl.org/yapc/2002/movies/themovie/"><b><font color="#0F0FAA">says</font></b></a> "you <i>can't just make shit up and expect the computer to know what you mean, retardo</i><B>!</B>"</font></small></td></tr><tr><td colspan=2 bgcolor="#FFE0FF"><font color="black"><small>I run a Win32 PPM <a href="http://perlmonks.org/index.pl?node=162391"><b><font color="#0F0FAA">repository</font></b></a> for perl <a href="http://crazyinsomniac.perlmonk.org/perl/ppm"><b><font color="#0F0FAA">5.6.x</font></b></a> and <a href="http://crazyinsomniac.perlmonk.org/perl/ppm/5.8"><b><font color="#0F0FAA">5.8.x</font></b></a> -- I take requests (<a href="http://crazyinsomniac.perlmonk.org/perl/ppm/README.html"><b><font color="#0F0FAA">README</font></b></a>).</font></small></td></tr><tr><td colspan=2 bgcolor="#FFD0FF"><small><font color="black">** The third rule of perl club is a statement of fact: pod is sexy.</font></small></td></tr></table></div></div>
300762
300762