C sharp - Detectar cuando hay disco dentro del lector

 
Vista:
sin imagen de perfil
Val: 173
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Detectar cuando hay disco dentro del lector

Publicado por Meta (93 intervenciones) el 12/03/2021 13:35:14
Hola:

Usando Windows 10 Pro, en "Información del Sistema" me de esto.

1657202
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.
1657203
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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 173
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Detectar cuando hay disco dentro del lector

Publicado por Meta (93 intervenciones) el 19/03/2021 22:02:10
Hola:

Un programa que detecta el disco del lectro si está dentro o no. me lo muestra en forma de True o False.

No logro que me lo muestre que me diga esto:

Disco en el lector: Sí

Me lo muestra en True.

Ver imagen.

¿Qué se puede cambiar en este código?

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
44
45
46
47
48
49
50
51
52
53
using System;
using System.Management;
 
namespace CPU_GPU_Hardware_informacion_consola_01
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Título de la ventana.";
 
            // Tamaño de la ventana, x, y.
            Console.SetWindowSize(120, 63);
 
            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Gray;
 
            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Black;
 
            // Limpiar pantalla y dejarlo todo gris.
            Console.Clear();
 
            // Visible el cursor.
            Console.CursorVisible = true;
 
            // Nombre del procesador.
            GetMyCPUInfo("Win32_Processor", "Name");
 
            // CD ROM.
            GetMyCPUInfo("Win32_CDROMDrive", "Name");
            Console.Write("Medio cargado: (Disco en el lector:) ");
            GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");
 
 
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("FIN DEL PROGRAMA.");
 
            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }
 
        private static void GetMyCPUInfo(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                Console.WriteLine(Convert.ToString(mj[syntax]));
            }
        }
    }
}

Cualquier información aquí.
https://docs.microsoft.com/es-es/windows/win32/cimwin32prov/win32-cdromdrive

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