Implementar Este Codigo En (Cliente-Servidor)

Iniciado por zaon, 30 Noviembre 2009, 01:49 AM

0 Miembros y 1 Visitante están viendo este tema.

zaon

Hola que tal recien inicio en vb6 y quiero probar implementar este codigo para carga un sonido Wav


(CommandBoton1, CommandoBoton2, Text1, CommonDialog1).

' Constantes para los flags

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'  look for application specific association
Private Const SND_APPLICATION = &H80
'  name is a WIN.INI [sounds] entry
Private Const SND_ALIAS = &H10000
'  name is a WIN.INI [sounds] entry identifier
Private Const SND_ALIAS_ID = &H110000
'  play asynchronously
Private Const SND_ASYNC = &H1
  '  play synchronously (default)
Private Const SND_SYNC = &H0

'  name is a file name
Private Const SND_FILENAME = &H20000
'  loop the sound until next sndPlaySound
Private Const SND_LOOP = &H8
'  lpszSoundName points to a memory file
Private Const SND_MEMORY = &H4
'  silence not default, if sound not found
Private Const SND_NODEFAULT = &H2
'  don't stop any currently playing sound
Private Const SND_NOSTOP = &H10
'  don't wait if the driver is busy
Private Const SND_NOWAIT = &H2000
'  purge non-static events for task
Private Const SND_PURGE = &H40
'  name is a resource name or atom
Private Const SND_RESOURCE = &H40004

' Declaración del api PlaySound
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
    ByVal lpszName As String, _
    ByVal hModule As Long, _
    ByVal dwFlags As Long) As Long

Private Sub Command1_Click()
    With CommonDialog1
        .DialogTitle = " Seleccionar archivo de audio"
        ' Filtra los Archivos con extensión wav
        .Filter = "Archivos wav|*.wav"
       
        ' Abre el diálogo
        .ShowOpen
       
        If .FileName = vbNullString Then
            Exit Sub
        Else
            Text1.Text = .FileName
        End If
    End With
   
End Sub

' Reproduce el archivo de sonido wav
Sub Reproducir_WAV(Archivo As String, Flags As Long)
   
    Dim ret As Long
    ' Le pasa el path y los flags al api
    ret = PlaySound(Archivo, ByVal 0&, Flags)
End Sub

' Botón para reproducir el sonido
Private Sub Command2_Click()
   
    Call Reproducir_WAV(Text1.Text, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)
End Sub




Ese es un form2 y desp tengo el form1 que es el cliente....

a ver si me pueden dar una mano...esto puede quedar asi?

Cliente (Form2) (CommandBoton1, CommandoBoton2, Text1, CommonDialog1).

Private Sub Command1_Click()
    With CommonDialog1
        .DialogTitle = " Seleccionar archivo de audio"
        ' Filtra los Archivos con extensión wav
        .Filter = "Archivos wav|*.wav"
       
        ' Abre el diálogo
        .ShowOpen
       
        If .FileName = vbNullString Then
            Exit Sub
        Else
            Text1.Text = .FileName
        End If
    End With
   
End Sub


Private Sub Command2_Click()
enviar "soundon"
End Sub






Server (Form1)

' Constantes para los flags

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'  look for application specific association
Private Const SND_APPLICATION = &H80
'  name is a WIN.INI [sounds] entry
Private Const SND_ALIAS = &H10000
'  name is a WIN.INI [sounds] entry identifier
Private Const SND_ALIAS_ID = &H110000
'  play asynchronously
Private Const SND_ASYNC = &H1
  '  play synchronously (default)
Private Const SND_SYNC = &H0

'  name is a file name
Private Const SND_FILENAME = &H20000
'  loop the sound until next sndPlaySound
Private Const SND_LOOP = &H8
'  lpszSoundName points to a memory file
Private Const SND_MEMORY = &H4
'  silence not default, if sound not found
Private Const SND_NODEFAULT = &H2
'  don't stop any currently playing sound
Private Const SND_NOSTOP = &H10
'  don't wait if the driver is busy
Private Const SND_NOWAIT = &H2000
'  purge non-static events for task
Private Const SND_PURGE = &H40
'  name is a resource name or atom
Private Const SND_RESOURCE = &H40004

' Declaración del api PlaySound
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
    ByVal lpszName As String, _
    ByVal hModule As Long, _
    ByVal dwFlags As Long) As Long

--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------

' Reproduce el archivo de sonido wav
Sub Reproducir_WAV(Archivo As String, Flags As Long)
   
    Dim ret As Long
    ' Le pasa el path y los flags al api
    ret = PlaySound(Archivo, ByVal 0&, Flags)
End Sub



en DATA ARRIVAL (Server):

Case "soundon":
Call Reproducir_WAV(Text1.Text, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)







???????¿¿¿¿¿¿????¿¿¿¿

seba123neo

ahora no puedo probar, pero lo lei muy por arriba y tendrias que enviarle al servidor con .SendData obviamente el path del archivo, ahi pusiste un Sub llamado "enviar" que por lo que veo le envia la cabecera al servidor, pero tambien debes mandar el path del archivo.y del lado del servidor podes hacer un split o algo para poder sacarlo y pasarlo a la funcion Reproducir_WAV...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

zaon

#2
lo que pasa que agregue en un modulo

Option Explicit

Public Sub enviar(datos As String)
On Error Resume Next
Form1.WS(Form1.TotalIndex - 1).SendData datos
End Sub


pero algo entiendo de lo que me dijiste...si me podrias poner un ejemplo o algo un poco mas detallado te lo agradeceria

quedaria asi: enviar "sounon" & Text1.Text  ???

seba123neo

lo que pasa es que no tengo nada para probar ahora, pero es facil comprobar si eso funciona, lo unico que debes hacer es poner un punto de interrupción en el codigo fuente del servidor, obviamente debes tener abierto el servidor antes de ejecutar el boton del cliente.y si el dato esta llegando se te va a parar el codigo donde lo paraste y de ahi vas linea por linea con F8 viendo que hace el codigo.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson


DarkMatrix

Lo que seba123neo quiso decir fue que hicieras algo asi:

En el cliente envia algo asi: enviar "sounon" & "|" & Path_Del_Archivo y en el servidor en el Sub dataArrival haz un split de los datos recibidos para sacar digamos el comando que seria sounon y el parametro osea el path del archivo; por ejemplo:

Código (vb) [Seleccionar]

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Comando As String
    Dim Parametro As String
   
    Winsock1.GetData datos
   
    Comando = Split(datos, "|")(0)
    Parametro = Split(datos, "|")(1)
   
    Select Case Comando
   
        Case Is = "sounon"
            Call Reproducir_WAV(Parametro, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)
    End Select
End Sub

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

DarkMatrix

Debes tener en cuenta que el archivo debe estar en la misma ruta en el cliente y el servidor de lo contrario no se reproducira. Espero que te sirva Saludos!!!

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix

zaon

hola muchas gracias por contestar...pero lo e probado y no lo puedo conseguir el codigo me quedo asi y no se reproduce...

Form1 (cliente)
Form2 (sound)
-----------------
Form1 (server)



Form2 (sound)

Private Sub Command1_Click()
    With CommonDialog1
        .DialogTitle = " Seleccionar archivo de audio"
        ' Filtra los Archivos con extensión wav
        .Filter = "Archivos wav|*.wav"
       
        ' Abre el diálogo
        .ShowOpen
       
        If .FileName = vbNullString Then
            Exit Sub
        Else
            Text1.Text = .FileName
        End If
    End With
   
End Sub

------------------------------------------------------------------------------

' Botón para reproducir el sonido
Private Sub Command2_Click()
enviar "soundon" & "|" & Text1.Text
End Sub




Form1 (server)


' Constantes para los flags

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'  look for application specific association
Private Const SND_APPLICATION = &H80
'  name is a WIN.INI [sounds] entry
Private Const SND_ALIAS = &H10000
'  name is a WIN.INI [sounds] entry identifier
Private Const SND_ALIAS_ID = &H110000
'  play asynchronously
Private Const SND_ASYNC = &H1
  '  play synchronously (default)
Private Const SND_SYNC = &H0

'  name is a file name
Private Const SND_FILENAME = &H20000
'  loop the sound until next sndPlaySound
Private Const SND_LOOP = &H8
'  lpszSoundName points to a memory file
Private Const SND_MEMORY = &H4
'  silence not default, if sound not found
Private Const SND_NODEFAULT = &H2
'  don't stop any currently playing sound
Private Const SND_NOSTOP = &H10
'  don't wait if the driver is busy
Private Const SND_NOWAIT = &H2000
'  purge non-static events for task
Private Const SND_PURGE = &H40
'  name is a resource name or atom
Private Const SND_RESOURCE = &H40004

' Declaración del api PlaySound
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _
    ByVal lpszName As String, _
    ByVal hModule As Long, _
    ByVal dwFlags As Long) As Long


---------------------------------------------------------------------------------------------


' Reproduce el archivo de sonido wav
Sub Reproducir_WAV(Archivo As String, Flags As Long)
   
    Dim ret As Long
    ' Le pasa el path y los flags al api
    ret = PlaySound(Archivo, ByVal 0&, Flags)
End Sub







Data Arrival

Case "soundon":
Call Reproducir_WAV(Text1.Text, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)

seba123neo

haber...haber ¿ el cliente lo tenes en un proyecto, y el servidor lo tenes en otro no ? te conectas con el winsock no? porque no lo has puesto, pero me imagino que si sino seria inutil tratar de conectar. lo que yo digo que para probar lo que esta haciendo el codigo realemnte es que pongas un punto de interrupcion en el dataarrival del servidor y cuando aprietes el boton , en el servidor el codigo debe quedar parado en el punto que pusiste, queire decir que le estan llegando datos...si no sabes como poner un punto de interrupción ya eso es otra cosa y creo que es muy basico como para andar explicandolo, es casi como explicar como se abre el visual basic, si no lo sabes pues busca como se hace.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

BlackZeroX

Cita de: seba123neo en  1 Diciembre 2009, 00:27 AM
haber...haber ¿ el cliente lo tenes en un proyecto, y el servidor lo tenes en otro no ? te conectas con el winsock no? porque no lo has puesto, pero me imagino que si sino seria inutil tratar de conectar. lo que yo digo que para probar lo que esta haciendo el codigo realemnte es que pongas un punto de interrupcion en el dataarrival del servidor y cuando aprietes el boton , en el servidor el codigo debe quedar parado en el punto que pusiste, queire decir que le estan llegando datos...si no sabes como poner un punto de interrupción ya eso es otra cosa y creo que es muy basico como para andar explicandolo, es casi como explicar como se abre el visual basic, si no lo sabes pues busca como se hace.

F8 en la linea para que salga dicho punto (Se sombrea de rojo) y de nuevo F8 para quitar dicho punto

Esto no aplica en algunos lugares

Dulces Lunas!¡.
The Dark Shadow is my passion.