http://qs321.pair.com?node_id=309404


in reply to Re: Re: Re: Re: The behavior of Win32::OLE->new
in thread The behavior of Win32::OLE->new

Why do they need to be different processes?

Have a look at Win32::Process, it creates processes using the Windows API. A quick test shows that each explorer window shows up as its own process. It also includes a kill method that kills a given process ID.

I'm not sure that Win32::Process ships with ActiveState perl, but ppm shows a couple of versions available.

A quick proof-of-concept follows...

use strict; use warnings; use Win32::Process; use Win32; sub ErrorReport{ print Win32::FormatMessage( Win32::GetLastError()) } my @processes; for (0, 1) { my $tmpPO; Win32::Process::Create($tmpPO, "F:\\Program Files\\Internet Explorer\\IEXPLORE.EXE", "", 0, CREATE_NEW_PROCESS_GROUP, "." )|| die ErrorReport(); push @processes, $tmpPO; print "Process $_ created: Process ID is ", $processes[$_]->GetProcessID, ".\n"; } print "Press enter to kill current processes:"; <STDIN>; $processes[$_]->Kill(0) for (0, 1);