#!/usr/bin/perl -- use strict; use warnings; use Win32::MCI::Basic; Main( @ARGV ); exit( 0 ); sub Main { my $sFileName = shift or die "Usage: $0 C:\media\sh-boom.mp3 \n"; Shabba( qq{open "$sFileName" alias MediaFile } ); # OK! ## http://msdn.microsoft.com/en-us/library/ms709461%28v=VS.85%29.aspx# MCI my $length = Shabba( qq{status MediaFile length } ); Shabba( qq{play MediaFile from 0 } ); my $position = Shabba( qq{status MediaFile position} ); while ( $position < $length ){ sleep 1; $position = Shabba( qq{status MediaFile position} ); } Shabba( qq{close MediaFile } ); } sub Shabba { my $lpszCommand = shift; my ( $APICallReturnValue, $lpszReturnString ) = mciSendString($lpszCommand); my $lpszErrorText = mciGetErrorString( $APICallReturnValue ); no warnings 'uninitialized'; print " \$lpszCommand : $lpszCommand \$APICallReturnValue : $APICallReturnValue \$lpszReturnString : $lpszReturnString \$lpszErrorText : $lpszErrorText ---- "; return $lpszReturnString ; } __END__