Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583

    VB6 suoni

    Ciao
    Mentre in VBScript lo faccio ad occhi chiusi, mi trovo in grosse difficoltà con VB nell'eseguire un semplice suono da programma (wave o midi)
    Come si fa?
    Ci vuole per forza un lettore?
    Grazie rudyF

  2. #2
    Ciao..basta usare la funzione API SndPlaySound:
    codice:
    Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Se poi hai problemi scrivi pure..ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Ciao
    grazie per la risposta.
    Sono un po' arrugginito col VB, saresti così gentile da farmi un esempio dettagliato?
    I suoni vengono avviati da programma e si trovano in "audio/suonoA.wav" "audio/suonoB.mid"
    rudyF

  4. #4
    codice:
    Public Const SND_ASYNC = &H1
    Public Const SND_LOOP = &H8
    Public Const SND_MEMORY = &H4
    Public Const SND_NODEFAULT = &H2
    Public Const SND_SYNC = &H0
    Public Const SND_NOSTOP = &H10
    
    
    '· lpszSound = percorso del suono da eseguire
    '· fuSound = tipologia di riproduzione: ecco le seguenti opzioni
    '       SND_ASYNC = esecuzione asincrona, la funzione ritorna subito dopo l'avvio del suono e per fermarlo
                        'occorre chiamare la funzione con lpszsound = NULL
    '       SND_LOOP = esecuzione continua finchè non viene chiamata nuovamente la funzione con lpszsound = NULL
    '       SND_MEMORY = riguarda l'immagine nella memoria, non ti interessa per il tuo scopo
    '       SND_NODEFAULT = se non viene trovato il suono non viene eseguito
    '       SND_NOSTOP = se il suono è già in esecuzione la funzione ritorna falso, e non viene eseguito il suono
    '       SND_SYNC = esecuzione sincrona, la funzione non ritorna finchè non finisce il suono
    
    Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    
    Sub main()
    
    Dim PercorsoFile As String
    
    If Dir(PercorsoFile) <> "" Then
    
             sndPlaySound PercorsoFile, SND_ASYNC
    
    end if
    
    End Sub

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Scusa se rompo
    Riducendo il codice all'osso mi risulta così:

    code:--------------------------------------------------------------

    Const SND_ASYNCSND_ASYNC = &H1

    Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

    Sub main()
    sndPlaySound (App.Path & "audio/w.wav"), SND_ASYNC
    End Sub
    --------------------------------------------------------------------

    Però mi da errore di compilazione:
    Costanti, stringhe di lunghezza fissa, matrici, tipi definiti dall'utente e istruzioni Declare non ammessi come membri Public di moduli di oggetto
    Dove sbaglio?
    rudyF

  6. #6
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, se la chiamata della api non è in un modulo, la dichiarazione deve essere private e non public.
    Controlla anche la costante..non è la stessa che hai dichiarato..
    Jupy

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Grazie.
    Ho corretto, ma non sento nulla.

    Const SND_ASYNCSND = &H1
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

    Sub window_onLoad()
    sndPlaySound (App.Path & "audio/w.wav"), SND_ASYNC
    End Sub

  8. #8
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    La dichiarazione della costante ha un nome diverso da quella che usi nella funzione!
    codice:
    Const SND_ASYNC = &H1
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    
    Private Sub Command1_Click()
        sndPlaySound ("e:\ringin.wav"), SND_ASYNC
    End Sub
    Questo funziona... prova
    Jupy

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Funziona!
    Grazie mille
    rudyF

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.