elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ayuda en VB.NET
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda en VB.NET  (Leído 2,820 veces)
**Aincrad**


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
ayuda en VB.NET
« en: 13 Noviembre 2017, 15:05 pm »

hola a todos.

bueno tengo un pequeño problemilla. tengo el siguiente code:
Código
  1. Const SAFT48kHz16BitStereo = 39
  2. Const SSFMCreateForWrite = 3
  3. Dim oFileStream, oVoice
  4.  
  5. Set oFileStream = CreateObject("SAPI.SpFileStream")
  6. oFileStream.Format.Type = SAFT48kHz16BitStereo
  7. oFileStream.Open "C:\Work\Sample.wav", SSFMCreateForWrite ' Aqui el directorio que quiero cambiar por un SaveFileDialog1.FileName
  8.  
  9. Set oVoice = CreateObject("SAPI.SpVoice")
  10. Set oVoice.AudioOutputStream = oFileStream
  11. oVoice.Speak(ben.Text, 3)
  12.  
  13. oVoice.WaitUntilDone(10000)
  14.  
  15. oFileStream.Close

y lo que quiero es cambiar ese directorio por un SaveFileDialog1.FileName
y me quedaria algo como esto:

Código
  1. Const SAFT48kHz16BitStereo = 39
  2. Const SSFMCreateForWrite = 3
  3. SaveFileDialog1.DefaultExt = ".wav"
  4. Dim oFileStream, oVoice
  5.  
  6.  
  7. Set oFileStream = CreateObject("SAPI.SpFileStream")
  8. oFileStream.Format.Type = SAFT48kHz16BitStereo
  9. oFileStream.Open SaveFileDialog1.FileName, SSFMCreateForWrite
  10.  
  11. Set oVoice = CreateObject("SAPI.SpVoice")
  12. Set oVoice.AudioOutputStream = oFileStream
  13. oVoice.Speak "Hello world", 3
  14.  
  15. oVoice.WaitUntilDone(10000)
  16.  
  17. oFileStream.Close

no se si me explique , en pocas palabras lo que quiero es aplicar el SaveFileDialog1.FileName al primer code que puse , pero no logro hacerlo , disculpen mi ignorancia.   

gracias de antemano.  ;D


En línea



Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: ayuda en VB.NET
« Respuesta #1 en: 13 Noviembre 2017, 16:12 pm »

De entrada, quiero reprenderte, por estas razones:
1º - Veo que no eres nuevo en el foro (tienes ya 175 mensajes publicados en el foro), pero el título del tema, no dice nada, los títulos de los temas DEBEN SER DESCRIPTIVOS del problema en cuestión. Decir "Ayuda..." es nada. El buscador del foro, es completamente inútil con títulos así.
2º - De hecho es probable que tu pregunta ya esté explicada en este mismo foro, más de 1 ó 5 veces. Creo que no has usado el buscador del foro...
3º - De hecho es tan genérica que puedo asegurarte que hay miles de ejemplos buscando por google "ejemplo para usar el control SaveFileDialog en VB.NET", tampoco te has tomado la molestia de buscar en la red de forma genérica con google (u otro buscador de tu elección).


Cuando se hagan preguntas en un foro, tiene uno al menos que haber investigado por su cuenta, y sólo cuando no haya logrado nada al respecto (casos de temas complejos, nuevos, o muy específicos que escapen de la generalidad), es cuando es razonable preguntar en un foro en busca de ayuda. Pero el primer punto de la ayuda, debe ser buscarla por uno mismo:
1º - En la ayuda que el propio programa-entorno contenga.
2º - En la web propia del lenguaje que uno usa (en este caso concreto Microsoft.com)
3º - En los buscadores de internet (Google it's your friend and wikipedia your cousin, my brother).
4º - En el buscador del foro.
5º - Si todo lo anterior fracasa, es cuando procede hacer una consulta en el foro, pero además bien formulada y con un título claramente descriptivo (lo de breve si es posible, y en el sitio correcto, en eso aciertas).


Así que no voy a ayudarte con el tema, y preferiría que tampoco lo hiciera ningún compañero...


En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
Re: ayuda en VB.NET
« Respuesta #2 en: 13 Noviembre 2017, 17:05 pm »

bueno , acepto todo lo que mes has dicho como critica constructiva . de verdad admito que fuy un poco flojo acerca de el titulo.

y acerca del code ya lo he logrado , bueno ha quedado asi:

Código
  1. Const SAFT48kHz16BitStereo = 39
  2.        Const SSFMCreateForWrite = 3
  3.        Dim oFileStream, oVoice
  4.        Dim saveFileDialog2 As New SaveFileDialog()
  5.        saveFileDialog2.Filter = "WAV Sound|*.wav"
  6.        saveFileDialog2.Title = "Save an sound File"
  7.        saveFileDialog2.ShowDialog()
  8.        Try
  9.                oFileStream = CreateObject("SAPI.SpFileStream")
  10.                oFileStream.Format.Type = SAFT48kHz16BitStereo
  11.                oFileStream.Open(saveFileDialog2.FileName, SSFMCreateForWrite)
  12.  
  13.                oVoice = CreateObject("SAPI.SpVoice")
  14.                oVoice.AudioOutputStream = oFileStream
  15.                oVoice.Speak(ben.Text, 3)
  16.  
  17.                oVoice.WaitUntilDone(10000)
  18.  
  19.                oFileStream.Close()
  20.        Catch ex As Exception
  21.            MsgBox(ex.Message)
  22.        End Try
« Última modificación: 13 Noviembre 2017, 17:06 pm por **Aincrad** » En línea



Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.810



Ver Perfil
Re: ayuda en VB.NET
« Respuesta #3 en: 13 Noviembre 2017, 21:58 pm »

Aparte de todo lo que te ha dicho el compañero @NEBIRE, cosa en la que concuerdo completamente...

Código
  1. CreateObject("SAPI.SpFileStream")

...No existe una necesidad real de recurrir a código no administrado, y aparte lo estás haciendo al estilo obsoleto, inseguro y limitado de VB6/VBS, para eso sinceramente no conviene usar .NET, por que no le estás sacando ningún beneficio real. Deberías evitar copiar el primer código que te encuentres en Internet para VB6 o VBS, e intentar buscar soluciones más actualizadas que hagan uso de los miembros equivalentes para .NET Framework ( System.Type.GetTypeFromProgID() + System.Activator.CreateInstance() + Implementación de interfaces nativas ), no es tan dificil investigar bien... en general debes evitar usar en lo máximo posible los miembros del espacio de nombres Microsoft.VisualBasic, por que el 80% aprox del contenido son miembros que están ahí simplemente por compatibilidad en temas de migración de VB6 a VB.NET, pero cuyo código fuente de todos esos miembros, aunque sea una implementación en código .NET apesta, es un código muy poco óptimo y miembros muy limitados en comparación (puedes observar las diferencias analizando la referencia online del código fuente de .NET Framework).

Si quieres hacer de forma correcta, segura y sofisticada lo que pretendes hacer, entonces usa la implementación administrada de Microsoft Speech API (SAPI) para .NET. Aquí tienes un ejemplo para sintetizar texto y guardarlo en un archivo WAV:


PD: La documentación de MSDN es tu mejor amiga... cuando no sepas algo, busca ahí.

Saludos.
« Última modificación: 13 Noviembre 2017, 22:32 pm por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines