Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - eseguire un file wav senza specificare il percorso obbligato
Forum - C# / VB.NET - eseguire un file wav senza specificare il percorso obbligato

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 21:32
Sabato, 09/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?


filippo
PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 10:34
Domenica, 10/01/2010
Testo quotato

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

  1. 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

  1. Select Case ComboBox1.Text
  2.             Case Is = "1"
  3.             'tue istruzioni
  4.         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 :k:

PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 12:22
Domenica, 10/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.


filippo
PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 12:46
Domenica, 10/01/2010
Testo quotato

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 :rotfl: infatti puoi fare:
Codice sorgente - presumibilmente VB.NET

  1. Select Case ComboBox1.Text
  2.             Case Is = "1"
  3.                 TextBox1.Text = "unu"
  4.             Case Is = "camminare"
  5.                 TextBox1.Text = "caminari"
  6.         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

  1. 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

  1. Application.StartupPath + "\audio" etc..


PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 13:35
Domenica, 10/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.


filippo
PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 13:44
Domenica, 10/01/2010
bho! riprovo ad allegare il file


fifiddu ha allegato un file: WindowsApplication1.zip (513659 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da fifiddu il 10/01/2010 alle 13:46


filippo
PM Quote
Avatar
noitide (Normal User)
Pro


Messaggi: 107
Iscritto: 24/06/2009

Segnala al moderatore
Postato alle 14:09
Domenica, 10/01/2010
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

  1. My.Resources.

e avrai accesso a tutte le risorse ke hai aggiunto.
quindi la tua stringa di codice si trasforma in:
Codice sorgente - presumibilmente Plain Text

  1. 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.

PM Quote
Avatar
fifiddu (Normal User)
Rookie


Messaggi: 41
Iscritto: 01/01/2010

Segnala al moderatore
Postato alle 15:03
Domenica, 10/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


filippo
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:16
Lunedì, 11/01/2010
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.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo