Hola:
Aquí hay un código hecho en Java usando WMPlayer.OCX.7. Quiero usar en Java mciSendString(L"Set CDAudio Door Open Wait", 0, 0, 0);
Es para abrir y cerrar la bandeja.
/**
*
*/
package com.sabado;
import java.io.File;
import java.io.FileWriter;
/**
* -.-
*
*/
public class Unidad {
/**
* @param args
*/
public static void main
(String[] args
) {
// TODO Auto-generated method stub
//mostramos mensajes antes de abrir las bandejas de CD DVD
null, "Pulsa OK para abrir las bandejas de los " +
"lectores/grabadores de CD/DVD del equipo.", "Abrir CD/DVD",
Unidad.abrirBandejaCDDVD();
//mostramos mensaje antes de cerrar las bandejas de CD DVD
null, "Pulsa OK para cerrar las bandejas de los " +
"lectores/grabadores de CD/DVD del equipo.", "Cerrar CD/DVD",
Unidad.cerrarBandejaCDDVD();
}
public static void abrirBandejaCDDVD ()
{
try
{
File file
= File.
createTempFile("abrirbandejacd",
".vbs");
file.deleteOnExit();
String vbs
= "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
+ "Set collCDROM = objPlayer.cdromCollection \n"
+ "if collCDROM.Count >= 1 then \n"
+ "For i = 0 to collCDROM.Count - 1 \n"
+ "collCDROM.Item(i).Eject \n"
+ "Next \n"
+ "End If \n";
fw.write(vbs);
fw.close();
Runtime.
getRuntime().
exec("wscript " + file.
getPath()).
waitFor();
}
{
e.printStackTrace();
}
}
public static void cerrarBandejaCDDVD()
{
try
{
File file
= File.
createTempFile("cerrarbandejacd",
".vbs");
file.deleteOnExit();
//para cerrar las bandejas de CD hay que ejecutar "eject" dos veces
String vbs
= "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
+ "Set collCDROM = objPlayer.cdromCollection \n"
+ "if collCDROM.Count >= 1 then \n"
+ "For i = 0 to collCDROM.Count - 1 \n"
+ "collCDROM.Item(i).Eject \n"
+ "collCDROM.Item(i).Eject \n"
+ "Next \n"
+ "End If \n";
fw.write(vbs);
fw.close();
Runtime.
getRuntime().
exec("wscript " + file.
getPath()).
waitFor();
}
{
e.printStackTrace();
}
}
}
¿Algún ejemplo usando mciSendString en Java?
Lo pregunto porque el de arriba es mucho código para lo que hay que hacer, abrir y cerrar la bandeja.
Un ejemplo en C++ se hace en menos líneas de códigos, por ejemplo este indicado abajo.
Paso 1:
(https://www.subeimagenes.com/img/84-1801402.png)
Paso 2:
(https://www.subeimagenes.com/img/85-1801403.png)
Paso3:
Escribir Winmm.lib.
(https://www.subeimagenes.com/img/86-1801406.png)
Paso 4:
(https://www.subeimagenes.com/img/87-1801409.png)
Sólo se necesita tres includes.
#include "stdafx.h"
#include "Windows.h"
#include "iostream"
using namespace std;
int main()
{
// Título de la ventana.
SetConsoleTitle(L"Consola C++ Win32 2017");
// Variable.
char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
while (true)
{
// Muestra en pantalla textos.
cout << "Control bandeja del lector: " << endl << endl;
cout << "A - Abrir bandeja." << endl;
cout << "C - Cerrar bandeja." << endl;
cout << "==========================" << endl;
cin >> entrada; // Aquí introduces letras A, a, C, y c.
cout << "\n" << endl;
// Abrir bandeja.
if ((entrada[0] == 'a') || (entrada[0] == 'A'))
{
cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
}
// Cerrar bandeja.
else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
{
cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
}
// Si haz pulsado otro caracter distinto de A, C, a, y c aparece
else
{
cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
}
}
return EXIT_SUCCESS;
}
Saludos.