C/Visual C - uso de mciSendCommand

 
Vista:

uso de mciSendCommand

Publicado por Carlos (8 intervenciones) el 24/05/2003 07:07:49
Hola estoy intentando abrir un archivo mp3 usando mciSendCommand en c++ pero me da error en el uso de los mciOpenParms, si alguien puede ayudarme le agredesco mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solución de errores al usar mciSendCommand para abrir archivos MP3

Publicado por Alejandro (1153 intervenciones) el 12/06/2025 21:12:42
¡Hola, Carlos! Para abrir un archivo MP3 utilizando `mciSendCommand` en C++, necesitas asegurarte de que estás configurando correctamente la estructura `MCI_OPEN_PARMS` y utilizando los parámetros adecuados. Aquí te dejo un ejemplo de cómo hacerlo:

Ejemplo de código en C++



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <windows.h>
#include <mmsystem.h>
#include <iostream>
 
#pragma comment(lib, "winmm.lib")
 
int main() {
    MCI_OPEN_PARMS mciOpenParms;
    MCI_PLAY_PARMS mciPlayParms;
    DWORD dwReturn;
 
    // Inicializar la estructura MCI_OPEN_PARMS
    ZeroMemory(&mciOpenParms, sizeof(mciOpenParms));
    mciOpenParms.dwCallback = 0; // No se necesita callback
    mciOpenParms.lpstrDeviceType = (LPCSTR)MCI_DEVTYPE_AUDIO; // Tipo de dispositivo
    mciOpenParms.lpstrElementName = "C:\\ruta\\a\\tu\\archivo.mp3"; // Ruta del archivo MP3
 
    // Abrir el archivo MP3
    dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE, (DWORD)(LPVOID)&mciOpenParms);
 
    if (dwReturn != 0) {
        std::cerr << "Error al abrir el archivo: " << mciGetErrorString(dwReturn, NULL, 0) << std::endl;
        return 1;
    }
 
    // Reproducir el archivo
    mciPlayParms.dwCallback = 0; // No se necesita callback
    dwReturn = mciSendCommand(mciOpenParms.wDeviceID, MCI_PLAY, 0, (DWORD)(LPVOID)&mciPlayParms);
 
    if (dwReturn != 0) {
        std::cerr << "Error al reproducir el archivo: " << mciGetErrorString(dwReturn, NULL, 0) << std::endl;
        return 1;
    }
 
    // Esperar a que termine la reproducción
    std::cout << "Reproduciendo... Presiona Enter para salir." << std::endl;
    std::cin.get();
 
    // Cerrar el dispositivo
    mciSendCommand(mciOpenParms.wDeviceID, MCI_CLOSE, 0, 0);
 
    return 0;
}

Explicación del código:



1. Incluir las bibliotecas necesarias:
- Asegúrate de incluir `<windows.h>` y `<mmsystem.h>`, y vincular con `winmm.lib`.

2. Inicializar `MCI_OPEN_PARMS`:
- Usa `ZeroMemory` para inicializar la estructura.
- Establece `lpstrElementName` con la ruta completa del archivo MP3 que deseas abrir.

3. Abrir el archivo:
- Llama a `mciSendCommand` con `MCI_OPEN` y verifica si hay errores.

4. Reproducir el archivo:
- Usa `MCI_PLAY` para comenzar la reproducción.

5. Cerrar el dispositivo:
- Al finalizar, asegúrate de cerrar el dispositivo con `MCI_CLOSE`.


Notas:


- Asegúrate de que la ruta del archivo MP3 sea correcta y que el archivo exista.
- Si sigues teniendo problemas, verifica que el formato MP3 esté soportado en tu sistema y que los controladores de audio estén correctamente instalados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar