Detectar cuando hay disco dentro del lector
Publicado por Meta (138 intervenciones) el 12/03/2021 13:35:14
Hola:
Usando Windows 10 Pro, en "Información del Sistema" me de esto.

Ver zoom.
Como puedes ver donde pone "Medio cargado" Sí.
Pone Sí, porque tengo un disco dentro del lector. Quiero hacer un programa que me detecte cuando hay un disco dentro.
Lo que he hecho hasta ahora es solo abrir y cerrar la bandeja.

Ver zoom.
Como escribí antes. El código este solo abre y cierra la bandeja del disco.
Ahora solto falta que el programa me detecte cuando tiene un disco dentro o no. Debo añadir un botón que diga "Leer" y me aparezca en otro label esto:
Disco: Sí.
También dirá que no si no tiene disco dentro, todo esto pulsando el botón Leer.
¿Existe la forma de hacerlo realidad?
Saludos
Usando Windows 10 Pro, en "Información del Sistema" me de esto.
Ver zoom.
Como puedes ver donde pone "Medio cargado" Sí.
Pone Sí, porque tengo un disco dentro del lector. Quiero hacer un programa que me detecte cuando hay un disco dentro.
Lo que he hecho hasta ahora es solo abrir y cerrar la bandeja.
Ver zoom.
Como escribí antes. El código este solo abre y cierra la bandeja del disco.
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
using System;
using System.Runtime.InteropServices; // No olvidar.
using System.Text;
using System.Windows.Forms;
namespace Lector_discos_cs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("winmm.dll")]
public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, IntPtr hwndCallback);
StringBuilder rt = new StringBuilder(127);
private void button_Abrir_Click(object sender, EventArgs e)
{
label_Mensaje.Text = "Abriendo...";
Application.DoEvents();
mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
/* Si quieres por ejemplo elegir la unidad que quieras, en este caso la H, se le asigana !H
como indica abajo. En vez de CDAudio, CDAudio!H.
mciSendString("set CDAudio!H door open", rt, 127, IntPtr.Zero);
*/
label_Mensaje.Text = "Abierto.";
}
private void button_Cerrar_Click(object sender, EventArgs e)
{
label_Mensaje.Text = "Cerrando...";
Application.DoEvents();
mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero);
label_Mensaje.Text = "Cerrado.";
}
}
}
Ahora solto falta que el programa me detecte cuando tiene un disco dentro o no. Debo añadir un botón que diga "Leer" y me aparezca en otro label esto:
Disco: Sí.
También dirá que no si no tiene disco dentro, todo esto pulsando el botón Leer.
¿Existe la forma de hacerlo realidad?
Saludos
Valora esta pregunta


0