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.
(https://social.msdn.microsoft.com/Forums/getfile/1657202)
Ver imagen (https://social.msdn.microsoft.com/Forums/getfile/1657202).
¿Qué se puede cambiar en este código?
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.
			
			
			
				Buenas:
Por ejemplo, en esta parte.
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 Sí o No.
Quiero hacer algo de esto como indica abajo pero no sale.
            // ¿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.
			
			
			
				Y que error te larga si lo tratas de hacer como en la última?
			
			
			
				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.
            // ¿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 (https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/compiler-messages/cs0019?f1url=%3FappId%3Droslyn%26k%3Dk(CS0019))   El operador '==' no se puede aplicar a operandos del tipo 'void' y 'bool'
			 
			
			
				Buenas:
Empezando desde cero. Me sale a medias.
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.
			
			
			
				Hola:
Parace ser que por fin me funciona.
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.
(https://social.msdn.microsoft.com/Forums/getfile/1657203)
Ver imagen (https://social.msdn.microsoft.com/Forums/getfile/1657203).
Saludos.