You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
1.7 KiB

#
# Copyright (c) 2012 Ashok P. Nadkarni
# All rights reserved.
#
# See the file LICENSE for license
# Generate sound for the specified duration
proc twapi::beep {args} {
array set opts [parseargs args {
{frequency.int 1000}
{duration.int 100}
{type.arg}
}]
if {[info exists opts(type)]} {
switch -exact -- $opts(type) {
ok {MessageBeep 0}
hand {MessageBeep 0x10}
question {MessageBeep 0x20}
exclaimation {MessageBeep 0x30}
exclamation {MessageBeep 0x30}
asterisk {MessageBeep 0x40}
default {error "Unknown sound type '$opts(type)'"}
}
return
}
Beep $opts(frequency) $opts(duration)
return
}
# Play the specified sound
proc twapi::play_sound {name args} {
array set opts [parseargs args {
alias
async
loop
nodefault
wait
nostop
}]
if {$opts(alias)} {
set flags 0x00010000; #SND_ALIAS
} else {
set flags 0x00020000; #SND_FILENAME
}
if {$opts(loop)} {
# Note LOOP requires ASYNC
setbits flags 0x9; #SND_LOOP | SND_ASYNC
} else {
if {$opts(async)} {
setbits flags 0x0001; #SND_ASYNC
} else {
setbits flags 0x0000; #SND_SYNC
}
}
if {$opts(nodefault)} {
setbits flags 0x0002; #SND_NODEFAULT
}
if {! $opts(wait)} {
setbits flags 0x00002000; #SND_NOWAIT
}
if {$opts(nostop)} {
setbits flags 0x0010; #SND_NOSTOP
}
return [PlaySound $name 0 $flags]
}
proc twapi::stop_sound {} {
PlaySound "" 0 0x0040; #SND_PURGE
}