_PlaySystemSound()

  • _PlaySystemSound()
    [autoit]

    _PlaySystemSound("Default",True)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(5000) ; wartet auf das Ende des Asyncron laufenden Sounds
    ; (Sound wird sonst beim Beenden vom Script automatisch abgebrochen !)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _PlaySystemSound()
    ; Description ...: Spielt einen Systemklang, welcher in der Registry oder der Win.ini definiert ist.
    ; Syntax.........: _PlaySystemSound($sSoundName[, $bAsync])
    ; Parameters ....: $sSoundName - Name des SystemSound's
    ; | SystemAsterisk - Stern / Asterisk
    ; | Default - Standardton Warnsignal / Default Beep
    ; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
    ; | SystemExclamation - Hinweis / when windows shows a warning
    ; | SystemExit - Windows beenden / when Windows shuts down
    ; | Maximize - Maximieren / when a program is maximized
    ; | MenuCommand - Menübefehl / when a menu item is clicked on
    ; | MenuPopup - Menü-Popup / when a (sub)menu pops up
    ; | Minimize - Minimieren / when a program is minimized to taskbar
    ; | MailBeep - Posteingangsbenachrichtigung / when email is received
    ; | Open - Programm öffnen / when a program is opened
    ; | SystemHand - Kritischer Abbruch / when a critical stop occurs
    ; | AppGPFault - Programmfehler / when a program causes an error
    ; | SystemQuestion - Frage / when a system question occurs
    ; | RestoreDown - Verkleinern / when a program is minimized to taskbar
    ; | RestoreUp - Vergrößern / when a program is restored to normal size from taskbar
    ; | SystemStart - Windows starten / when Windows starts up
    ; | Close - Programm schließen / when program is closed
    ; | Ringout - Freizeichen / when (fax) call is made outbound and the line is ringing
    ; | RingIn - Eingehender Anruf / incoming (fax) call
    ; | DeiviceConnect - Geräteanschluß / when a device is connect
    ; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
    ; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
    ; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
    ; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
    ; | MailBeep - Posteingangsbenachrichtigung / when a mail is arrived
    ; | PrintComplete - Druckvorgang abgeschlossen / when a printjob is completed
    ; $bAsync - Abspielen erfolgt Syncron
    ; Return values .: -----
    ; Author ........: micha_he (AutoIt.de)
    ; Informations...: weitere System-Event-Namen können Sie unter folgendem Registryzweigen finden bzw. hinzufügen:
    ; - HKEY_USERS\.DEFAULT\AppEvents\EventLabels\
    ; - HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default
    ; ===============================================================================================================================
    Func _PlaySystemSound($sSoundName, $bAsync = FALSE)
    Local Const $SND_ALIAS = 0x10000
    Local Const $SND_ASYNC = 0x1
    Local $flags
    $flags = $SND_ALIAS
    If $bAsync Then $flags = BitOr($flags, $SND_ASYNC)
    DllCall('winmm.dll', 'int', 'PlaySoundA', 'str', $sSoundName, 'int', 0, 'int', $flags)
    EndFunc ; ==> _PlaySystemSound()

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    5 Mal editiert, zuletzt von Micha_he (6. Mai 2009 um 18:09)

  • Ein wenig Internet-Recherche und (wie es auch in der Funktion als Info mit besteht) etwas Nachlesen in der Windows-Registry.
    Dort stehen viele sauber aufgelistet. Und interessant sind ja auch nur die, die auf fast allen Windows-Version existieren. Sonst funktioniert der Sound ja nicht überall.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • und was solltes bei der Einstellung Deiner Meinung nach kommen ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Ich dachte jetzt, die Funktion wäre dazu da, diese Sounds unabhängig vom OS (verschiedene Pfade/verschieden Dateinamen) auszugeben.
    Also ohne Abhängigkeit vom eingestellten Soundschema.

    Quasi als Ersatz für:

    [autoit]

    SoundPlay(@WindowsDir & '\media\Windows XP-Abmeldesound.wav')

    [/autoit]


    Hierbei gibt es ja das Problem, dass die Dateien im englischen Windows anders heißen und dass sie unter Vista woanders liegen?!

  • Genau, unabhängig unterschiedlicher Pfade und Laufwerke !

    Aber nicht unabhängig des Soundschemas ! Sondern gerade abhängig von diesem.

    Der Ersatz für Dein Besipiel wäre ja in dem Fall '_PlaySystemSound("WindowsLogoff")'. Hierbei wird kein Pfad angegaben, sondern das File abgespielt, was der User (muss nicht Admin sein) für seine Windows-Umgebung, in seinem Soundschema, definiert hat !

    Und wenn Du als aktueller User, dein Soundschema auf "keine Sounds" stellst, dann wird halt von dieser Funktion NICHTS wiedergegeben oder eben wir die schon sagtest, nur ein BEEP.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hab mal was getestet. 'EmptyRecycleBin' ging nicht mit micha_he 's Version, also hab ich eine eigene Funktion geschrieben, die mir die Default-Sounds wiedergibt. Dabei ist es egal welches Schema aktiv ist. Wenn kein Default-Sound vergeben sein sollte, wird genau wie bei micha_he 's Version ein Ping gespielt.
    Ich hab die Funktionen auch umbenannt.

    Spoiler anzeigen
    [autoit]

    _PlayDefaultSystemSound('EmptyRecycleBin', 1) ;funkey
    _PlayCurrentSystemSound('EmptyRecycleBin', 0) ;micha_he

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _PlayCurrentSystemSound()
    ; Description ...: Spielt einen Systemklang, welcher in der Registry oder der Win.ini definiert ist.
    ; Syntax.........: _PlayCurrentSystemSound($sSoundName[, $bAsync])
    ; Parameters ....: $sSoundName - Name des SystemSound's
    ; | SystemAsterisk - Stern / Asterisk
    ; | Default - Standardton Warnsignal / Default Beep
    ; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
    ; | SystemExclamation - Hinweis / when windows shows a warning
    ; | SystemExit - Windows beenden / when Windows shuts down
    ; | Maximize - Maximieren / when a program is maximized
    ; | MenuCommand - Menübefehl / when a menu item is clicked on
    ; | MenuPopup - Menü-Popup / when a (sub)menu pops up
    ; | Minimize - Minimieren / when a program is minimized to taskbar
    ; | MailBeep - Posteingangsbenachrichtigung / when email is received
    ; | Open - Programm öffnen / when a program is opened
    ; | SystemHand - Kritischer Abbruch / when a critical stop occurs
    ; | AppGPFault - Programmfehler / when a program causes an error
    ; | SystemQuestion - Frage / when a system question occurs
    ; | RestoreDown - Verkleinern / when a program is minimized to taskbar
    ; | RestoreUp - Vergrößern / when a program is restored to normal size from taskbar
    ; | SystemStart - Windows starten / when Windows starts up
    ; | Close - Programm schließen / when program is closed
    ; | Ringout - Freizeichen / when (fax) call is made outbound and the line is ringing
    ; | RingIn - Eingehender Anruf / incoming (fax) call
    ; | DeiviceConnect - Geräteanschluß / when a device is connect
    ; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
    ; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
    ; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
    ; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
    ; | MailBeep - Posteingangsbenachrichtigung / when a mail is arrived
    ; | PrintComplete - Druckvorgang abgeschlossen / when a printjob is completed
    ; $bAsync - Abspielen erfolgt Syncron
    ; Return values .: -----
    ; Author ........: micha_he (AutoIt.de)
    ; Informations...: weitere System-Event-Namen können Sie unter folgendem Registryzweigen finden bzw. hinzufügen:
    ; - HKEY_USERS\.DEFAULT\AppEvents\EventLabels\
    ; - HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default
    ; ===============================================================================================================================
    Func _PlayCurrentSystemSound($sSoundName, $bAsync = False)
    Local Const $SND_ALIAS = 0x10000
    Local Const $SND_ASYNC = 0x1
    Local $flags
    $flags = $SND_ALIAS
    If $bAsync Then $flags = BitOR($flags, $SND_ASYNC)
    DllCall('winmm.dll', 'int', 'PlaySoundA', 'str', $sSoundName, 'int', 0, 'int', $flags)
    EndFunc ;==>_PlayCurrentSystemSound

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _PlayDefaultSystemSound()
    ; Description ...: Spielt einen Systemklang, welcher in der Registry definiert ist.
    ; Syntax.........: _PlayDefaultSystemSound($sSoundName, $iWait = 0)
    ; Parameters ....: $sSoundName - Name des SystemSound's
    ; | Default - Standardton Warnsignal / Default Beep
    ; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
    ; | DeiviceConnect - Geräteanschluß / when a device is connect
    ; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
    ; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
    ; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
    ; | MailBeep - Posteingangsbenachrichtigung / when email is received
    ; | SystemAsterisk - Stern / Asterisk
    ; | SystemExclamation - Hinweis / when windows shows a warning
    ; | SystemExit - Windows beenden / when Windows shuts down
    ; | SystemHand - Kritischer Abbruch / when a critical stop occurs
    ; | SystemNotification - Sprechblase / when a critical stop occurs
    ; | SystemStart - Windows starten / when Windows starts up
    ; | WindowsLogoff - beim Windows abmelden / when logging off Windows
    ; | WindowsLogon - beim Windows anmelden / when logging on Windows
    ; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
    ; | Navigating - Browser Klick / navigating in browser

    [/autoit] [autoit][/autoit] [autoit]

    ; $iWait - Warten bis SoundPlay beendet? (0 = nein / 1 = ja)
    ; Return values .: -----
    ; Author ........: funkey (AutoIt.de)
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _PlayDefaultSystemSound($sSoundName, $iWait = 0)
    ; funkey
    Local $sKey = 'HKU\.Default\AppEvents\Schemes\Apps\.Default'
    If $sSoundName = 'EmptyRecycleBin' Or $sSoundName = 'Navigating' Then $sKey = 'HKU\.Default\AppEvents\Schemes\Apps\Explorer'
    Local $sFile = StringReplace(RegRead($sKey &'\' & $sSoundName & '\.Default', ''), '%SystemRoot%', @WindowsDir)
    If $sFile = "" Then
    SoundPlay(StringReplace(RegRead($sKey &'\.Default\.Default', ''), '%SystemRoot%', @WindowsDir), $iWait)
    Else
    SoundPlay($sFile, $iWait)
    EndIf
    EndFunc ;==>_PlaySystemSound

    [/autoit]

    EDIT: Hatte noch eine Fehler drinn, der RegRead unglücklicherweise beeinflusst hat.

  • Hab mal was getestet. 'EmptyRecycleBin' ging nicht mit micha_he 's Version

    Bei mir ging's. Der Papierkorb ist zwar bei mir standardmäßig nicht definiert gewesen, aber nachdem ich in mit einem Sound versehen hatte, konnte ich ihn auch mit _PlaySystemSound() abspielen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    funkey: Geil! So eine Funktion ("_PlayDefaultSystemSound") habe ich gesucht. Funktioniert die auch unter Vista?
    Mir ist allerdings aufgefallen, das manchmal (wenn ich den Sound gewechselt habe) nur ein "Windows XP-Ping.wav" abgespielt wird (über die Lautsprecher, nicht über den Beeper).
    Wenn ich den gleichen Sound dann nochmal abspielen lasse, dann wird der richtige Sound abgespielt. :huh:

  • RegRead liest erst beim 2. Versuch den selben Schlüsel zu lesen, den richtigen Wert aus ?(
    Das sieht für mich wie ein Bug aus. Gibt es da Bestätigungen dafür?
    Hab mal eine Debug-Zeile eingefügt, mit der Ausgabe von RegRead und dem @error. Dadurch wird jetzt aber immer der richtige Sound abgespielt.

    Spoiler anzeigen
    [autoit]

    _PlayDefaultSystemSound('DeviceFail', 1) ;funkey

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _PlayDefaultSystemSound()
    ; Description ...: Spielt einen Systemklang, welcher in der Registry definiert ist.
    ; Syntax.........: _PlayDefaultSystemSound($sSoundName, $iWait = 0)
    ; Parameters ....: $sSoundName - Name des SystemSound's
    ; | Default - Standardton Warnsignal / Default Beep
    ; | CriticalBatteryAlarm - Alarm bei kritischem Batteriestand / when battery is critical
    ; | DeviceConnect - Geräteanschluß / when a device is connect
    ; | DeviceDisconnect - Gerätetrennung / when a device is disconnect
    ; | DeviceFail - Geräteanschluß fehlgeschlagen / when a deviceconnect is fail
    ; | LowBatteryAlarm - Alarm bei niedrigem Batteriestand / when battery is low
    ; | MailBeep - Posteingangsbenachrichtigung / when email is received
    ; | SystemAsterisk - Stern / Asterisk
    ; | SystemExclamation - Hinweis / when windows shows a warning
    ; | SystemExit - Windows beenden / when Windows shuts down
    ; | SystemHand - Kritischer Abbruch / when a critical stop occurs
    ; | SystemNotification - Sprechblase / when a critical stop occurs
    ; | SystemStart - Windows starten / when Windows starts up
    ; | WindowsLogoff - beim Windows abmelden / when logging off Windows
    ; | WindowsLogon - beim Windows anmelden / when logging on Windows
    ; | EmptyRecycleBin - Löschen des Papierkorbs / when recycle bin is emptied
    ; | Navigating - Browser Klick / navigating in browser

    [/autoit] [autoit][/autoit] [autoit]

    ; $iWait - Warten bis SoundPlay beendet? (0 = nein / 1 = ja)
    ; Return values .: -----
    ; Author ........: funkey (AutoIt.de)
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _PlayDefaultSystemSound($sSoundName, $iWait = 0)
    ; funkey
    Local $sKey = 'HKEY_USERS\.Default\AppEvents\Schemes\Apps\.Default'
    If $sSoundName = 'EmptyRecycleBin' Or $sSoundName = 'Navigating' Then $sKey = 'HKEY_USERS\.Default\AppEvents\Schemes\Apps\Explorer'
    Local $sFile = StringReplace(RegRead($sKey &'\' & $sSoundName & '\.Default', ''), '%SystemRoot%', @WindowsDir)
    If $sFile = "" Then
    SoundPlay(StringReplace(RegRead($sKey &'\.Default\.Default', ''), '%SystemRoot%', @WindowsDir), $iWait)
    Else
    SoundPlay($sFile, $iWait)
    EndIf
    EndFunc ;==>_PlaySystemSound

    [/autoit]


    EDIT: k.A. ob das ganze Vista-tauglich ist !?
    EDIT: Hatte noch eine Fehler drinn, der RegRead unglücklicherweise beeinflusst hat.

    POST 1000 :thumbup:

    • Offizieller Beitrag

    Ist nicht Vista tauglich. Die RegEinträge gibt es dort nicht .
    PS: Habe Vista Ultimate 64