Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: zaon en 30 Noviembre 2009, 01:49 am



Título: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: zaon en 30 Noviembre 2009, 01:49 am
Hola que tal recien inicio en vb6 y quiero probar implementar este codigo para carga un sonido Wav


(CommandBoton1, CommandoBoton2, Text1, CommonDialog1).

Código:
' 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).

Código:
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)

Código:
' 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):

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






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


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: seba123neo en 30 Noviembre 2009, 02:00 am
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.


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: zaon en 30 Noviembre 2009, 02:07 am
lo que pasa que agregue en un modulo

Código:
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:
Código:
enviar "sounon" & Text1.Text
  ???


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: seba123neo en 30 Noviembre 2009, 02:15 am
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.


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: zaon en 30 Noviembre 2009, 18:40 pm
no lo pude lograr


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: DarkMatrix en 30 Noviembre 2009, 19:48 pm
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
  1. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  2.    Dim Comando As String
  3.    Dim Parametro As String
  4.  
  5.    Winsock1.GetData datos
  6.  
  7.    Comando = Split(datos, "|")(0)
  8.    Parametro = Split(datos, "|")(1)
  9.  
  10.    Select Case Comando
  11.  
  12.        Case Is = "sounon"
  13.            Call Reproducir_WAV(Parametro, SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)
  14.    End Select
  15. End Sub


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: DarkMatrix en 30 Noviembre 2009, 19:53 pm
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!!!


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: zaon en 30 Noviembre 2009, 22:08 pm
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)

Código:
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)


Código:
' 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

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


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: 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.


Título: Re: Implementar Este Codigo En (Cliente-Servidor)
Publicado por: BlackZeroX en 1 Diciembre 2009, 01:06 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!¡.