Detecta disco en el elctor

Iniciado por Meta, 19 Marzo 2021, 14:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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?

Código (csharp) [Seleccionar]
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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Buenas:

Por ejemplo, en esta parte.
Código (csharp) [Seleccionar]
GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");

¿Hay disco en el lector?

Como me da resultado de true o falso, quiero lograr de alguna manera que me muestre o No.

Quiero hacer algo de esto como indica abajo pero no sale.
Código (csharp) [Seleccionar]
            // ¿En el lector hay disco?
            // Sí. Hay disco.
            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
            {
                Console.WriteLine("Sí");
            }

            // No. No hay disco.
            else
            {
                Console.WriteLine("No");
            }


Buscando ideas.

Gracias.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

TickTack

Y que error te larga si lo tratas de hacer como en la última?
Citar
"Ninguna mentira puede inventarse lo suficientemente patán: el pueblo hispanohablante la cree. Por una consigna que se les dio, persiguieron a sus compatriotas con mayor encarnizamiento que a sus verdaderos enemigos."

Meta

Cita de: TickTack en 20 Marzo 2021, 14:03 PM
Y que error te larga si lo tratas de hacer como en la última?

Buenas:

No seja hacer este if Else.

Código (csharp) [Seleccionar]
            // ¿En el lector hay disco?
            // Sí. Hay disco.
            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
            {
                Console.WriteLine("Sí");
            }

            // No. No hay disco.
            else
            {
                Console.WriteLine("No");
            }


Citar
Error   CS0019   El operador '==' no se puede aplicar a operandos del tipo 'void' y 'bool'
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#4
Buenas:

Empezando desde cero. Me sale a medias.

Código (csharp) [Seleccionar]
using System;
using System.Management; // No olvidar. Añadir en Referencia.

namespace Detectar_disco_lector_consola_01
{
    class Program
    {
        // Variables.
        public static string datos = "";
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Detectar disco en el lector.";

            // Tamaño de la ventana, x, y.
            Console.SetWindowSize(60, 15);

            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Gray;

            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Black;

            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();

            // Visible el cursor.
            Console.CursorVisible = true;

            // Nombre del dispositivo o lector.
            Console.Write("Nombre del dispositivo: ");
            ConsigueComponentes("Win32_CDROMDrive", "Name");

            // Disco en la unidad del lector.
            Console.Write("Disco en el lector: ");
            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");

            // ¿Disco en el lector?
            if (datos == "True")
            {
                Console.WriteLine("Disco en el lector: Sí.");
            }

            else
            {
                Console.WriteLine("Disco en el lector: No.");
            }

            Console.Write("FIN DE PROGRAMA.");

            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }

        private static void ConsigueComponentes(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                if (Convert.ToString(mj[syntax]) != "")
                {
                    Console.WriteLine(datos = Convert.ToString(mj[syntax]));
                }
            }
        }
    }
}


Necesito pulir muchas cosas.

Que me detecte el disco en Sí o No.

El programa se puede mejorar, ya que me responde cuando solo aparece un True o False, pero puede ser cualquier dispositivo.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Hola:

Parace ser que por fin me funciona.
Código (csharp) [Seleccionar]
using System;
using System.Management; // No olvidar. Añadir en Referencia.

namespace Detectar_disco_lector_consola_01
{
    class Program
    {
        // Variables.
        public static string datos = "";
        static void Main(string[] args)
        {

            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");

            // ¿Disco en el lector?
            if (datos == "True")
            {
                Console.WriteLine("Disco en el lector: Sí.");
            }

            else
            {
                Console.WriteLine("Disco en el lector: No.");
            }

            // Pulse cualquier tecla para salir.
            Console.ReadKey();
        }

        private static void ConsigueComponentes(string hwclass, string syntax)
        {
            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
            foreach (ManagementObject mj in mos.Get())
            {
                if (Convert.ToString(mj[syntax]) != "")
                {
                    datos = Convert.ToString(mj[syntax]);
                }
            }
        }
    }
}


No se si es la mejor forma adecuada para hacer lo que quiero. Porque solo pide que sea true o false y puede ser cualquier otro dispositivo que haga lo mismo.

Ahora me toca implementarlo con Windows Form.


Ver imagen.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/