Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    VB6: suono file WAV da file risorse

    Vi sottopongo una cosa per me molto strana; sto provando a
    collegare ad una applicazione VB6 un file di risorse nel quale
    ho caricato dei file wav sotto il nome gruppo SUONI
    Poi ho scritto il seguente codice VB6


    Declare Function api_SuonaBrano _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
    ByVal lpszSoundName As Any, _
    ByVal uFlags As Long) _
    As Long

    Sub Main()

    Const SND_ASYNC = &H1
    Const SND_NODEFAULT = &H2
    Const SND_MEMORY = &H4
    Dim ret As Long

    §str = StrConv(LoadResData(101, "Suoni"), vbUnicode)
    ret = sndPlaySound(§str, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)
    End Sub



    Se eseguo (F5) funziona tutto a meraviglia;
    adesso creo il file EXE, lo eseguo e ... silenzio di tomba.

    dopo averne provate tante ho fatto la seguente modifica

    ret = sndPlaySound(§str, SND_NODEFAULT Or SND_MEMORY)

    e funziona sia da F5 che da file EXE;
    cosa sto sbagliando?
    grazie anticipate a chi volesse rispondermi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    (Esiste un forum apposito per il VB6, come hai già visto ... e dovresti usare i tag CODE per far capire meglio il codice ...)

    Se usi la riproduzione asincrona, la sndPlaySound non attende che il suono sia finito e permette al programma di continare. Ma essendo l'ultima istruzione, l'eseguibile viene chiuso e con questo il processo e il suono.

    Nell'IDE il programma termina ma il processo relativo all'IDE è ancora attivo e permette che il thread per l'esecuzione asincrona sia attivo.

    Se non usi la versione asincrona, allora la sndPlaySound non può far terminare il programma se non ha eseguito il suono.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ti ringrazio oregon
    adesso provo ad inserirla nel progetto reale dove
    non e' l' ultima istruzione, ma sono certo che funzionera'

    per quanto riguarda l' uso del CODE ti dispiace dirmi
    esattamente come si usa?
    io ho provato a cliccare sulla casella CODE e incollarvi
    il mio codice ma quello che leggo e' quasi incmprensibile

  4. #4
    oregon
    mi spiace ma ti disturbo ancora
    ho reinserito la SND_ASYNC e prima dell' END
    ho inserito il richiamo ad una funzione e
    quindi un msgbox; nonostamte non sia piu' l' ultima
    istruzione sull' EXE continua a non sentirsi il suono
    che faccio?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Posta il codice completo nuovamente
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    ecco il codice completo


    Declare Function api_SuonaBrano _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
    ByVal lpszSoundName As Any, _
    ByVal uFlags As Long) _
    As Long

    Sub Main()

    Const SND_ASYNC = &H1
    Const SND_NODEFAULT = &H2
    Const SND_MEMORY = &H4
    Dim ret As Long

    §str = StrConv(LoadResData(101, "Suoni"), vbUnicode)
    ret = sndPlaySound(§str, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY)

    MsgBox MiaFunzione

    End Sub


    Private Function MiaFunzione() As String
    .....
    .....
    End Function

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Come mai dichiari la funzione come api_SuonaBrano e poi la usi come sndPlaySound e perché usi un nome di variabile così strano ( §str ) ?

    In ogni caso, ho provato con la MsgBox e se viene proposto un "beep" dalla MsgBox questo annulla il suono precedente. Per vedere la differenza di funzionamento al posto della MsgBox usa una

    InputBox("")
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.