jimbojones has asked for the wisdom of the Perl Monks concerning the following question:
at the end of all my scripts. I want that code to be conditional on being invoked from a double-click file association. thanks for you help, - j Update: I was having trouble with the ouse.pm solution. It's good for double-clicking. However, if I invoke a script from the command line as:print "Hit <Enter> to continue\n"; my $y = <STDIN>;
instead of> foo.pl
I get the wait condition in the first case because the file association is still being used. I updated ouse.pm to use the Win32::Process::Info module to see if the parent process is Windows Explorer. UPdate 2: forgot a line> perl foo.pl
=head1 NAME ouse.pm =head1 SYNOPSIS perl -Mouse file.pl =head1 DESCRIPTION Install in your perl/lib or perl/site/lib directory in a file named "ouse.pm". Then enter the following commands: assoc .pl=Perl ftype Perl=C:\Progra~1\perl\bin\perl -Mouse "%1" %* Then clicking on a *.pl file will cause the script to run in a new window but the window will (usually) not close when the script finishes. =head1 AUTHOR tye http://perlmonks.org/index.pl?node_id=162087 =cut use Win32::Process::Info; END { #-- find the parent process; my $pi = Win32::Process::Info->new(); my @info = $pi->GetProcInfo ( $$); my @pinfo = $pi->GetProcInfo ( @info[0]->{ParentProcessId} ); #-- see if the parent process is the windows explorer. if ( $pinfo[0]->{CommandLine} =~ /explorer/i ) { eval " use Term::ReadKey; "; unless($@) { print "Press any key to close..."; ReadMode(3); ReadKey(); ReadMode(0); } else { print "Press ENTER to close: "; <STDIN>; } } } 1;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Windows .pl file assoc vs. cmd prompt
by VSarkiss (Monsignor) on Apr 08, 2005 at 14:10 UTC | |
by jimbojones (Friar) on Apr 08, 2005 at 14:44 UTC | |
|
Re: Windows .pl file assoc vs. cmd prompt
by inman (Curate) on Apr 08, 2005 at 14:56 UTC | |
|
Re: Windows .pl file assoc vs. cmd prompt
by Anonymous Monk on Apr 08, 2005 at 14:15 UTC | |
by Anonymous Monk on Apr 08, 2005 at 14:16 UTC |