ich habe ein AutoHotkey-Script geschrieben (AutoHotkey Unicode 32-Bit, 1.1.33.2), das den freien Platz eines Laufwerkes ermittelt und einen Alarmsound abspielt, wenn der Mindestwert unterschritten wird. Das Script habe ich kompiliert, damit es auch eingesetzt werden kann, wenn AutoHotkey nicht installiert ist.
Die Sounddatei wird aber nicht abgespielt, wenn ich die Funktion "SoundPlay" innerhalb des Scripts aufrufe. Nur wenn ich sie innerhalb eines zweiten Scriptes aufrufe, dem der Name der Sounddatei übergeben worden ist, ertönt der Sound.
Was habe ich falsch gemacht oder woran liegt es?
DiskSpaceAlarm.ahk:
Code: Select all
;Checks the free diskspace and plays alarmsound if space is low
IfNotEqual, 0, 3
{
MsgBox, 0, DiskSpaceAlarm 1.2, DiskSpaceAlarm 1.2`n`nWarnt wenn auf dem ueberwachten Laufwerk der freie Speicherplatz`neinen Mindestwert unterschreitet`n`nAufruf: DiskSpaceAlarm [Laufwerksbuchstabe:\] [Alarmwert in MB] [Sounddatei]`nAngaben mit Leerzeichen muessen mit Anfuehrungszeichen eingeschlossen werden.`n`nBeispiel: DiskSpaceAlarm D:\ 9000 "C:\Program Files\DVBViewer\Alarmsound.mp3"
exit (3)
}
MinSpace = %2%
AlarmSound = %3%
While (1)
{
DriveSpaceFree, FreeSpace, %1%
if (FreeSpace < MinSpace)
{
TrayTip, DriveFreepace, Freier Speicherplatz %1%: %FreeSpace%, 10, 1
;This doesn't work:
SoundPlay, "%3%", WAIT
;This doesn't work too:
AlarmFanfare(AlarmSound)
;Only this works:
RunWait, Alarm_Trumpet "%3%"
MsgBox, 308, Disk Full Warning, Das Laufwerk %1% ist gleich voll!`nEs sind nur noch %FreeSpace% MB frei`nBitte Dateien verschieben`nAlarm aussetzen? (j/N), 15
IfMsgBox Yes
{
InputBox, UserInput, Voruebergehend pausieren, Zeit in Minuten eigeben (1-60 Default 15), , , , , 60, 15
if ErrorLevel
{
MsgBox, 0, , CANCEL wurde gewaehlt., 15
}
else
{
MsgBox, 0, , Eingabe "%UserInput%", 15
if (UserInput < 1 or UserInput > 60)
MsgBox, 48, , Eingabefehler!, 30
else
Sleep, UserInput * 60000
}
}
else
{
MsgBox, 0, , Es wurde No gewaehlt., 15
sleep, 60000
}
}
else
{
Sleep, 300000
}
}
exit (0)
;This function doesn't work, separately compiled as Alarm_Trumpet it works
AlarmFanfare(sound)
{
SoundGet, master_volume
SoundGet, master_mute
SoundSet, OFF, , mute
SoundSet, 100
SoundPlay, %1%, WAIT
SoundSet, mute, master , mute
SoundSet, master_volume
}
Code: Select all
;Play alarmsound with sound on an volume 100 and restore the old volume and mute afterwards
SoundGet, master_volume
SoundGet, master_mute
SoundSet, OFF, , mute
SoundSet, 100
SoundPlay, %1%, WAIT
SoundSet, mute, master , mute
SoundSet, master_volume
Viele Grüße
Luke_Scriptwalker