Autor
|
Tema: [SOLUCIONADO] Extraer sonidos de una DLL (Leído 3,380 veces)
|
aaronduran2
|
Hola. Quisiera saber como extraer sonidos de una DLL. Tengo un código que permite extraer imágenes, pero lo que necesito es hacerlo con sonidos. Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Type PicBmp Size As Long Type As Long hBmp As Long hPal As Long Reserved As Long End Type Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnHandle As Long, _ IPic As IPicture) As Long Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapID As Long) As Long Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Declare Function FreeLibrary Lib "kernel32" _ (ByVal hLibModule As Long) As Long '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ' //CargarImagenDLL// '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ' Cargar una imagen de una DLL. '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Public Function CargarImagenDLL(sDLL As String, ByVal lID As Long) As Picture Dim hInst As Long Dim hBmp As Long Dim Pic As PicBmp Dim IPic As IPicture Dim IID_IDispatch As GUID Dim lRC As Long hInst = LoadLibrary(sDLL) If hInst <> 0 Then hBmp = LoadBitmap(hInst, lID) If hBmp <> 0 Then IID_IDispatch.Data1 = &H20400 IID_IDispatch.Data4(0) = &HC0 IID_IDispatch.Data4(7) = &H46 Pic.Size = Len(Pic) Pic.Type = vbPicTypeBitmap Pic.hBmp = hBmp Pic.hPal = 0 lRC = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic) If lRC = 0 Then Set CargarImagenDLL = IPic Set IPic = Nothing Else Call DeleteObject(hBmp) End If End If FreeLibrary (hInst) hInst = 0 End If End Function
Gracias de antemano.
|
|
« Última modificación: 16 Agosto 2008, 01:07 am por aaronduran2 »
|
En línea
|
|
|
|
aaronduran2
|
Bueno, intentando conseguir algún resultado, hice esto: Private Const SND_SYNC = &H0 ' play synchronously (default) Private Const SND_ASYNC = &H1 ' play asynchronously Private Const SND_NODEFAULT = &H2 ' silence not default, if sound not found Private Const SND_MEMORY = &H4 ' lpszSoundName points to a memory file Private Const SND_ALIAS = &H10000 ' name is a WIN.INI [sounds] entry Private Const SND_FILENAME = &H20000 ' name is a file name Private Const SND_RESOURCE = &H40004 ' name is a resource name or atom Private Const SND_ALIAS_ID = &H110000 ' name is a WIN.INI [sounds] entry identifier Private Const SND_ALIAS_START = 0 ' must be > 4096 to keep strings in same section of resource file Private Const SND_LOOP = &H8 ' loop the sound until next sndPlaySound Private Const SND_NOSTOP = &H10 ' don't stop any currently playing sound Private Const SND_VALID = &H1F ' valid flags / ;Internal / Private Const SND_NOWAIT = &H2000 ' don't wait if the driver is busy Private Const SND_VALIDFLAGS = &H17201F ' Set of valid flag bits. Anything outside this range will raise an error Private Const SND_RESERVED = &HFF000000 ' In particular these flags are reserved Private Const SND_TYPE_MASK = &H170007 Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, _ ByVal dwFlags As Long) As Long '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ' //CargarSonidoDLL// '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# ' Cargar un sonido de una DLL. '#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# Public Sub CargarSonidoDLL(sDLL As String, ByVal lID As Long) Const flags = SND_RESOURCE Or SND_ASYNC Or SND_NODEFAULT Dim hInst As Long Dim SonidoCargado As Variant hInst = LoadLibrary(sDLL) If hInst <> 0 Then SonidoCargado = PlaySound(CStr("#" & lID), hInst, flags) End If DoEvents FreeLibrary (hInst) hInst = 0 End Sub
Así que el problema está solucionado. Saludos.
|
|
|
En línea
|
|
|
|
user_foro
Desconectado
Mensajes: 28
|
Disculpen mi ignorancia, pero Cómo puedo ejecutar ese código para poder usarlo y poder obtener audios de una dll.
Alguien tendrá el ejecutable...
Agradecería mucho que me ayuden porfa... De verdad!
|
|
« Última modificación: 25 Mayo 2022, 07:34 am por user_foro »
|
En línea
|
|
|
|
Serapis
|
De entrada este hilo data del 2008... y para colmo pone 'solucionado', con lo cual es más probable que menos gente entre e intente dar una respuesta que ya se supone facilitada.
Para otra abre un nuevo tema y en todo caso proveer un enlace como referencia (por ejemplo a este tema).
Para terminar lo que pides, lo mismo que el propio título de este hilo se presta a interpretación.
En el caso que trata el tema, al parecer la dll es de su propiedad, tiene acceso a ella y conoce su contenido y se supone que puede cambiarlo cuando quiera. Es decir, parece que lo que quería era simplemente utilizar los sonidos que él mismo tendría almacenado (o accediendo, rescatando desde la propia dll) a recursos de sonido.
En tu caso parece que tratas (a interpretación mía), de exportar recursos de sonido que contiene una dll, de la que no tienes nada más que el propio fichero (porque por ejemplo pertenezca a un juego). Esto puede ser algo muy simple, o extremadamente complejo.
...pero si simplemente tratas de ejecutar un sonido que tienes lamacenado como recurso en una dll, o desde un fichero, es básicamente lo mismo que acceder a cualquier otro recurso de VB6, solo que en tal caso se trataría de un 'custom resource', por lo que hay que tratarlo de forma binaria... típicamente la función API PlaySound, puede recibir incluso los datos del sonido en formato de string, pués al pasar el dato por referencia simplemente está recibiendo el puntero...
Como no tengo nada claro que es con exactitud lo que quieres, aquí lo dejo. Si te expresas con más claridad, se te podrá orientar más acertadamente.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO]Extraer archivos dentro de un .jar
Java
|
cyberserver
|
6
|
13,109
|
31 Diciembre 2009, 14:13 pm
por Debci
|
|
|
[SOLUCIONADO] Extraer cadena de conexion
Programación Visual Basic
|
leosanzio
|
7
|
6,796
|
8 Marzo 2011, 23:28 pm
por raul338
|
|
|
(solucionado)No se me ollen los sonidos y notificaciones messenger plus
Mensajería
|
Anonymous250
|
3
|
4,729
|
8 Octubre 2011, 06:28 am
por Anonymous250
|
|
|
extraer sonidos de un archivo .jar
Ingeniería Inversa
|
daniel7885
|
2
|
3,450
|
14 Noviembre 2013, 09:32 am
por Mad Antrax
|
|
|
Extraer un dato de un JSON.parse [SOLUCIONADO]
Desarrollo Web
|
SpeedyFrost
|
3
|
2,223
|
21 Diciembre 2018, 14:33 pm
por SpeedyFrost
|
|