Interestingly, MessageBeep() doesn't work on my XP machine but Beep() does.

use strict;
use Win32::API;

my $msgBeep = Win32::API->new('user32', 'MessageBeep', 'N', 'N') or
die "Can't create a beep function: $^E\n";
my $beep    = Win32::API->new('kernel32', 'Beep', 'NN', 'N') or die
"Can't create a beep function: $^E\n";

$msgBeep->Call(-1);

$beep->Call(440, 1000);

One more way to do it and I'll call it a day:

From mmsystem.h:

#define sndAlias(c0,c1)
(SND_ALIAS_START+(DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8))
#define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
#define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
#define SND_ALIAS_SYSTEMHAND sndAlias('S','H')
#define SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
#define SND_ALIAS_SYSTEMSTART sndAlias('S','S')
#define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')

That means that the system default constant is 17491, so the perl code is:

use strict;
use Win32::API;

my $sndPlaySound = Win32::API->new('winmm', 'sndPlaySound', 'PI', 'I')
or die "Can't create a beep function: $^E\n";
$sndPlaySound->Call(17491, 0);

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to