#!perl -w use strict; use warnings; use Win32::GUI(); # This sample demonstrates GetOpenFileName my $lastfile = 'foo.bar'; # single file with graphics file filters { my ( @file, $file ); my ( @parms ); push @parms, -filter => [ 'TIF - Tagged Image Format', '*.tif', 'BMP - Windows Bitmap', '*.bmp', 'GIF - Graphics Interchange Format', '*.gif', 'JPG - Joint Photographics Experts Group', '*.jpg', 'All Files - *', '*' ], -directory => "c:\\program files", -title => 'Select a file'; push @parms, -file => $lastfile if $lastfile; @file = Win32::GUI::GetOpenFileName ( @parms ); print "$_\n" for @file; print "index of null:", index( $file[ 0 ], "\0" ), "\n"; print "index of space:", index( $file[ 0 ], " " ), "\n"; } # allow multiple files, only one filter { my ( @file, $file ); my ( @parms ); push @parms, -multisel => 10, # use 40000 byte buffer -filter => [ 'All Files - *', '*' ], -directory => "c:\\program files", -title => 'Select a file'; push @parms, -file => $lastfile if $lastfile; @file = Win32::GUI::GetOpenFileName ( @parms ); print "$_\n" for @file; print "index of null:", index( $file[ 0 ], "\0" ), "\n"; print "index of space:", index( $file[ 0 ], " " ), "\n"; } # old style dialog, multiple file selection enabled, no filters. # User has to type in a filter, to see anything. Always good to have a # filter. But it isn't required.... { my ( @file, $file ); my ( @parms ); push @parms, -multisel => 1, # use 4000 byte buffer -explorer => 0, -directory => "c:\\program files", -title => 'Select a file'; push @parms, -file => $lastfile if $lastfile; @file = Win32::GUI::GetOpenFileName ( @parms ); print "$_\n" for @file; print "index of null:", index( $file[ 0 ], "\0" ), "\n"; print "index of space:", index( $file[ 0 ], " " ), "\n"; }