fifiddu (Normal User)
Rookie
Messaggi: 41
Iscritto: 01/01/2010
|
ciao a tutti, ho appena installato visual studio 2008 ed avevo la necessità di far eseguire in una form in stile visual basic un file wave precedentemente registrato e inserito in una cartella chiamata audio,
in visual basic 6 la procedura era la seguente:
Private Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Sub PlaySound(strFileName As String)
sndPlaySound strFileName, 1
End Sub
Private Sub Command2_Click()
If Combo2.Text = "1" Then
Text1.Text = "UNU"
PlaySound App.Path & "\audio\1.wav"
end if
con questo metodo riuscivo a far ascoltare il file audio creando una specie di traduttore che in una combobox inserivo le frasi in italiano da una text avevo il risultato tradotto premendo il pulsante command2 e nello stesso tempo ascoltavo l'audio da me specificato.
ovviamente in visual studio 2008 sul pulsante la procedura che scrivo e la seguente:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If combobox1.Text = "1" Then
TextBox1.Text = "UNU"
End If
non so come far ascoltare l'audio.
spero di esser stato chiaro e che qualcuno mi dia un aiuto.
sembrerà stupido, ma come faccio ad inserire nella combobox le frasi ? in visual basic 6 era list in visual studio 2008?
|
|
noitide (Normal User)
Pro
Messaggi: 107
Iscritto: 24/06/2009
|
Postato originariamente da fifiddu:
ciao a tutti, ho appena installato visual studio 2008 ed avevo la necessità di far eseguire in una form in stile visual basic un file wave precedentemente registrato e inserito in una cartella chiamata audio,
in visual basic 6 la procedura era la seguente:
Private Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Public Sub PlaySound(strFileName As String)
sndPlaySound strFileName, 1
End Sub
Private Sub Command2_Click()
If Combo2.Text = "1" Then
Text1.Text = "UNU"
PlaySound App.Path & "\audio\1.wav"
end if
con questo metodo riuscivo a far ascoltare il file audio creando una specie di traduttore che in una combobox inserivo le frasi in italiano da una text avevo il risultato tradotto premendo il pulsante command2 e nello stesso tempo ascoltavo l'audio da me specificato.
ovviamente in visual studio 2008 sul pulsante la procedura che scrivo e la seguente:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If combobox1.Text = "1" Then
TextBox1.Text = "UNU"
End If
non so come far ascoltare l'audio.
spero di esser stato chiaro e che qualcuno mi dia un aiuto.
sembrerà stupido, ma come faccio ad inserire nella combobox le frasi ? in visual basic 6 era list in visual studio 2008? |
allora per far ascoltare l'audio basta ke usi questa sintassi:
Codice sorgente - presumibilmente Plain Text |
My.Computer.Audio.Play(percorso,opzioni) 'ti consiglio di provarle le opzioni xk sono molto comode
|
poi se ho capito bene tu vorresti ke l'utente in una combobox selezioni un numero, alla selezione del numero nella textbox appare una scritta e dopodichè viene riprodotto il suono ke corrisponde alla scritta della textbox. giusto? in questo caso se posso permettermi di darti un consiglio usa un select case per selezionare quale testo è stato inserito nella combobox, esempio:
Codice sorgente - presumibilmente VB.NET |
Select Case ComboBox1.Text Case Is = "1" 'tue istruzioni End Select
|
Poi per "inserire nella combobox le frasi" dovresti andare nella progettazione del form, selezionare la combobox e apparirà un piccolo triangolino in alto a destra sopra alla combobox, lo schiacci e selezioni "modifica elementi". Spero ke tu intendessi questo |
|
fifiddu (Normal User)
Rookie
Messaggi: 41
Iscritto: 01/01/2010
|
ho usato la funzione che dici tu in effetti e meglio dell'istruzione if eccoti l'esempio:
Public Class Form1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case ComboBox1.Text
Case Is = "1"
TextBox1.Text = "unu"
End Select
Select Case ComboBox1.Text
Case Is = "camminare"
TextBox1.Text = "caminari"
End Select
End Sub
End Class
adesso a questo esempio voglio far ascoltare un audio wave da me registrato ed associato alla parola in siciliano, ho una cartella chiamata audio dove ci sono tutte le frasi registrate da me e adesso vorrei fare in modo di richiamare i singoli file audio ma senza andare a specificare il percorso c:/ etc etc.. insomma vorrei che i file audio vengono richiamati da dentro la directory stessa da cui ho creato il programma e che quindi deve funzionare in qualsiasi pc, all'esempio che ti ho allegato puoi completarmelo come ti ho detto adesso? spero di essere stato chiaro,
il tutto lo sto facendo creando un progetto in visual basic con le windows application di visual studio 2008.
|
|
noitide (Normal User)
Pro
Messaggi: 107
Iscritto: 24/06/2009
|
Postato originariamente da fifiddu:
ho usato la funzione che dici tu in effetti e meglio dell'istruzione if eccoti l'esempio:
Public Class Form1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case ComboBox1.Text
Case Is = "1"
TextBox1.Text = "unu"
End Select
Select Case ComboBox1.Text
Case Is = "camminare"
TextBox1.Text = "caminari"
End Select
End Sub
End Class
adesso a questo esempio voglio far ascoltare un audio wave da me registrato ed associato alla parola in siciliano, ho una cartella chiamata audio dove ci sono tutte le frasi registrate da me e adesso vorrei fare in modo di richiamare i singoli file audio ma senza andare a specificare il percorso c:/ etc etc.. insomma vorrei che i file audio vengono richiamati da dentro la directory stessa da cui ho creato il programma e che quindi deve funzionare in qualsiasi pc, all'esempio che ti ho allegato puoi completarmelo come ti ho detto adesso? spero di essere stato chiaro,
il tutto lo sto facendo creando un progetto in visual basic con le windows application di visual studio 2008. |
allora, innanzitutto il select case usato così è sprecato infatti puoi fare:
Codice sorgente - presumibilmente VB.NET |
Select Case ComboBox1.Text Case Is = "1" TextBox1.Text = "unu" Case Is = "camminare" TextBox1.Text = "caminari" End Select
|
e poi sotto a textbox1.text = "unu" ad esempio ci metti le altre istruzioni ke vuoi fare quindi
Codice sorgente - presumibilmente Plain Text |
My.Computer.Audio.Play(percorsodelfile,opzioni)
|
dove percorsodelfile sta al tuo percorso e dopo ke hai inserito il percorso premi , e visual basic ti mostrerà le opzioni disponibili, oppure se vuoi puoi anke non metterle le opzioni e come default è impostata "Riproduci il suono in background".
se devi mettere ke i file audio si trovano nello stesso percorso del programma ma dentro una cartella audio non devi fare altro ke fare come facevi in vb6, cioè:
Codice sorgente - presumibilmente Plain Text |
Application.StartupPath + "\audio" etc..
|
|
|
fifiddu (Normal User)
Rookie
Messaggi: 41
Iscritto: 01/01/2010
|
dove e che sbaglio?
mi da errore, purtroppo sono all'inizio del visual studio 2008 e dal visual basic 6 a qui e molto diverso almeno per me
Public Class Form1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case ComboBox1.Text
Case Is = "sveglia"
TextBox1.Text = "svegghia"
My.Computer.Audio.Play(Application.StartupPath + "audio\sveglia")
End Select
End Sub
End Class
appena faccio il debug sembra tutto ok ma appena clicco sulla parola sveglia, mi va in errore
allego il sorgente sperando che mi sai risolvere il problema.
|
|
fifiddu (Normal User)
Rookie
Messaggi: 41
Iscritto: 01/01/2010
|
bho! riprovo ad allegare il file
Ultima modifica effettuata da fifiddu il 10/01/2010 alle 13:46 |
|
noitide (Normal User)
Pro
Messaggi: 107
Iscritto: 24/06/2009
|
allora.. probabilmente hai fatto unpo di confusione.. Il file lo aggiungi alle risorse del programma? (xk nel sorgente ke hai postato è nelle risorse del programma) oppure verrà creata la cartella sul pc dell'utente? (personalmente ti consiglio, se già non è così, di aggiungerlo alle risorse del programma). in questo caso x eseguirlo è logico ke non puoi mettere come percorso la cartella "Resources" xk non la troverà mai. infatti le risorse sono incorporate nell'exe quando vai in debug e quando compili. di conseguenza per richiamare dei file aggiunti alle risorse dei utilizzare
Codice sorgente - presumibilmente Plain Text |
e avrai accesso a tutte le risorse ke hai aggiunto.
quindi la tua stringa di codice si trasforma in:
Codice sorgente - presumibilmente Plain Text |
My.Computer.Audio.Play(My.Resources.sveglia, AudioPlayMode.Background)
|
Occhio però ke quando richiami delle risorse devi per forza esplicitare il parametro di opzioni se no ti darà sempre errore. |
|
fifiddu (Normal User)
Rookie
Messaggi: 41
Iscritto: 01/01/2010
|
abbi pazienza ma non ho capito il discorso di esplicitare, scusami ma sono all'inizio e quindi mi viene difficile capire,
credo che sbaglio sul fatto di mettere i file audio dentro la cartella resources o non so a cosa pensare ma appena aggiungo i file audio dentro la cartella e cerco di richiamare un file audio in debug mi da errore e la scritta My.resources.1 e anche la scritta "1" mi vengono evidenziate come se fossero errori di grammatica. eccoti quello che ho scritto:
Public Class Form1
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Select Case ComboBox1.Text
Case Is = "sveglia"
TextBox1.Text = "svegghia"
My.Computer.Audio.Play(My.Resources.sveglia, AudioPlayMode.Background)
Case Is "1"
TextBox1.Text = "unu"
My.Computer.Audio.Play(My.Resources.1, AudioPlayMode.Background)
End Select
End Sub
End Class
spero di non annoiarti e che riusciremo a venirne a capo
ancora grazie per la tua pazienza
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
My.Resources non indica solo file presenti in una cartella. E' necessario aggiungere i file alle risorse di progetto usando visual studio:
http://totem.altervista.org/guida/versione2/C6.php
P.S.: gli identificatori non possono iniziare con un numero, quindi My.Resources.1 è sbagliato. Sono invece corretti My.Resources._1 oppure My.Resources.Uno.
|
|