Load wav file from res in a dll

Iniciado por ntaryl, 18 Enero 2010, 19:56 PM

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

ntaryl

Good  evening 
I  try  this time  to load a res wav file from  dll   .but  no luck   
use this  example 
but  i dont  know  what the  wrong 
i successed to load from main project  and after try from dll  but something is wrong   
someone  can point me to  the correct way   



ssccaann43 ©

You need to upload the file .RES in the project and then want to upload .DLL file?
I do not know much you need to do. Do you have a source?
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

el_c0c0

Cita de: ntaryl en 18 Enero 2010, 19:56 PM
Good  evening 
I  try  this time  to load a res wav file from  dll   .but  no luck   
use this  example 
but  i dont  know  what the  wrong 
i successed to load from main project  and after try from dll  but something is wrong   
someone  can point me to  the correct way   




hi nyaryl, well, i remember that .. isnt hard... here you got a TIP to do that:
http://www.devx.com/tips/Tip/12595

by
'-     coco
"Te voy a romper el orto"- Las hemorroides

ntaryl

#3
thanks  for the  fast reply  
this  is my  example  
http://rapidshare.com/files/337400568/res-dll.rar.html
thanks  for the  tips  El_coco
in  local way  is  ok    
only with the dll  i  cant  
Thanks  for the time  

the example  come  from  thevbzone

el_c0c0

Cita de: ntaryl en 18 Enero 2010, 22:11 PM
thanks  for the  fast reply 
this  is my  example   
http://rapidshare.com/files/337400568/res-dll.rar.html
thanks  for the  tips  El_coco
in  local way  is  ok   
only with the dll  i  cant   
Thanks  for the time 

the example  come  from  thevbzone


i think you could load the dll, and get it hInstance, so, use that instead app.hinstance. i really dont know if it will work, but you can check.

BTW. i can't download your example, beacause stupid rapid share is overloaded!

by
'-     coco
"Te voy a romper el orto"- Las hemorroides

seba123neo

the code in the Command3 is wrong...this line of code:

Código (vb) [Seleccionar]
strFilePath = "\Sound.dll"

replace with this:

Código (vb) [Seleccionar]
strFilePath = "Sound.dll"

the line "\" is wrong...

and this:

Código (vb) [Seleccionar]
hResource = FindResource(hLibrary, "#101" & CStr(1) & Chr(0), "wave" & Chr(0))

replace with this:

Código (vb) [Seleccionar]

hResource = FindResource(hLibrary, "#101", "CUSTOM")


The final code is:

Código (vb) [Seleccionar]
Dim strString As String
    Dim so  As Integer
    Dim lngStringLen As Long, hResource As Long, hdata As Long
    Dim lpData As Long
    Dim strFilePath As String
    Dim hLibrary As Long
    strFilePath = "Sound.dll"
    hLibrary = LoadLibrary(strFilePath & Chr(0))
    hResource = FindResource(hLibrary, "#101", "CUSTOM")
    hdata = LoadResource(hLibrary, hResource)
    lpData = LockResource(hdata)
    PlaySound ByVal lpData, 0, SND_ASYNC Or SND_NODEFAULT Or SND_MEMORY
    FreeLibrary hLibrary


the sound sounds good...

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

el_c0c0

Cita de: seba123neo en 19 Enero 2010, 01:22 AM
...

very good seba. and the thing to use SND_ASYNC its good too, to not lock the process.

bye
'-     coco
"Te voy a romper el orto"- Las hemorroides

ntaryl

Thanks  guys  for  the  answer  
and  also to spent  time  in my post
   .
seba123neo : i  change the  commend3 with  this  code and  when  run the  project  crash  my  vb ide
also  when  run it  compile  crash  again  
in  ur pc  work  fine   ?
thanks  for the time  

http://img521.imageshack.us/img521/7886/errorwx.jpg


thanks  for  ur  time  also El_coco


ntaryl

thanks  again   
with  this  example  my  project  crash 
i  try  to use it again   
and  this  work   

Dim strFilePath As String
   Dim hLibrary As Long
   Dim hResource As Long
   Dim hData As Long
   Dim lpData As Long
   ' Get the path to the Resource DLL
   strFilePath = "Sound.dll"
   ' Load the Resource DLL
   hLibrary = LoadLibrary(strFilePath & Chr(0))
   If hLibrary = 0 Then
      MsgBox "Failed to load the specified library with error code " & Err.LastDllError
      Exit Sub
   End If
   ' Get a .WAV file from the Resource DLL
   hResource = FindResource(hLibrary, "#101", "CUSTOM")
   If hResource <> 0 Then
      hData = LoadResource(hLibrary, hResource) 'This gets a handle to the data
      If hData <> 0 Then
         lpData = LockResource(hData) 'This gets a POINTER to the data... which is what we need
         If lpData <> 0 Then
            PlaySound ByVal lpData, 0, SND_MEMORY Or SND_NODEFAULT Or SND_SYNC
         End If
      End If
   End If
   
   ' Close the Resource DLL
   FreeLibrary hLibrary

have a good  afternoon

cobein

Actually theres a simpler way to do it, the only thing you have to do is use some resource editor(Resource Builder will work) add the resource as WAVE instead of CUSTOM and then some code like this one.


Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Declare Function LoadLibraryEx Lib "kernel32" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long

Private Const LOAD_LIBRARY_AS_DATAFILE As Long = &H2
Private Const SND_ASYNC As Long = &H1
Private Const SND_RESOURCE As Long = &H40004


Private Sub Form_Load()
   Dim lLib As Long
   
   lLib = LoadLibraryEx("C:\Documents and Settings\Cobein\Escritorio\proyecto1.dll", 0, LOAD_LIBRARY_AS_DATAFILE)
   Debug.Print PlaySound("WAVE_0", lLib, SND_ASYNC Or SND_RESOURCE)
   
End Sub
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.