Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 19 Marzo 2021, 14:51 pm



Título: Detecta disco en el elctor
Publicado por: Meta en 19 Marzo 2021, 14:51 pm
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?

Código
  1. using System;
  2. using System.Management;
  3.  
  4. namespace CPU_GPU_Hardware_informacion_consola_01
  5. {
  6.    class Program
  7.    {
  8.        static void Main(string[] args)
  9.        {
  10.            // Título de la ventana.
  11.            Console.Title = "Título de la ventana.";
  12.  
  13.            // Tamaño de la ventana, x, y.
  14.            Console.SetWindowSize(120, 63);
  15.  
  16.            // Color de fondo.
  17.            Console.BackgroundColor = ConsoleColor.Gray;
  18.  
  19.            // Color de las letras.
  20.            Console.ForegroundColor = ConsoleColor.Black;
  21.  
  22.            // Limpiar pantalla y dejarlo todo gris.
  23.            Console.Clear();
  24.  
  25.            // Visible el cursor.
  26.            Console.CursorVisible = true;
  27.  
  28.            // Nombre del procesador.
  29.            GetMyCPUInfo("Win32_Processor", "Name");
  30.  
  31.            // CD ROM.
  32.            GetMyCPUInfo("Win32_CDROMDrive", "Name");
  33.            Console.Write("Medio cargado: (Disco en el lector:) ");
  34.            GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded");
  35.  
  36.  
  37.            Console.ForegroundColor = ConsoleColor.Blue;
  38.            Console.WriteLine("FIN DEL PROGRAMA.");
  39.  
  40.            // Pulse cualquier tecla para salir.
  41.            Console.ReadKey();
  42.        }
  43.  
  44.        private static void GetMyCPUInfo(string hwclass, string syntax)
  45.        {
  46.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  47.            foreach (ManagementObject mj in mos.Get())
  48.            {
  49.                Console.WriteLine(Convert.ToString(mj[syntax]));
  50.            }
  51.        }
  52.    }
  53. }

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

Saludos.


Título: Re: Detecta disco en el elctor
Publicado por: Meta en 20 Marzo 2021, 12:48 pm
Buenas:

Por ejemplo, en esta parte.
Código
  1. 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
  1.            // ¿En el lector hay disco?
  2.            // Sí. Hay disco.
  3.            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
  4.            {
  5.                Console.WriteLine("Sí");
  6.            }
  7.  
  8.            // No. No hay disco.
  9.            else
  10.            {
  11.                Console.WriteLine("No");
  12.            }
  13.  

Buscando ideas.

Gracias.


Título: Re: Detecta disco en el elctor
Publicado por: TickTack en 20 Marzo 2021, 14:03 pm
Y que error te larga si lo tratas de hacer como en la última?


Título: Re: Detecta disco en el elctor
Publicado por: Meta en 20 Marzo 2021, 20:11 pm
Y que error te larga si lo tratas de hacer como en la última?

Buenas:

No seja hacer este if Else.

Código
  1.            // ¿En el lector hay disco?
  2.            // Sí. Hay disco.
  3.            if (GetMyCPUInfo("Win32_CDROMDrive", "MediaLoaded") == true)
  4.            {
  5.                Console.WriteLine("Sí");
  6.            }
  7.  
  8.            // No. No hay disco.
  9.            else
  10.            {
  11.                Console.WriteLine("No");
  12.            }

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'


Título: Re: Detecta disco en el elctor
Publicado por: Meta en 21 Marzo 2021, 01:03 am
Buenas:

Empezando desde cero. Me sale a medias.

Código
  1. using System;
  2. using System.Management; // No olvidar. Añadir en Referencia.
  3.  
  4. namespace Detectar_disco_lector_consola_01
  5. {
  6.    class Program
  7.    {
  8.        // Variables.
  9.        public static string datos = "";
  10.        static void Main(string[] args)
  11.        {
  12.            // Título de la ventana.
  13.            Console.Title = "Detectar disco en el lector.";
  14.  
  15.            // Tamaño de la ventana, x, y.
  16.            Console.SetWindowSize(60, 15);
  17.  
  18.            // Color de fondo.
  19.            Console.BackgroundColor = ConsoleColor.Gray;
  20.  
  21.            // Color de las letras.
  22.            Console.ForegroundColor = ConsoleColor.Black;
  23.  
  24.            // Limpiar pantalla y dejarlo todo en color de fondo.
  25.            Console.Clear();
  26.  
  27.            // Visible el cursor.
  28.            Console.CursorVisible = true;
  29.  
  30.            // Nombre del dispositivo o lector.
  31.            Console.Write("Nombre del dispositivo: ");
  32.            ConsigueComponentes("Win32_CDROMDrive", "Name");
  33.  
  34.            // Disco en la unidad del lector.
  35.            Console.Write("Disco en el lector: ");
  36.            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");
  37.  
  38.            // ¿Disco en el lector?
  39.            if (datos == "True")
  40.            {
  41.                Console.WriteLine("Disco en el lector: Sí.");
  42.            }
  43.  
  44.            else
  45.            {
  46.                Console.WriteLine("Disco en el lector: No.");
  47.            }
  48.  
  49.            Console.Write("FIN DE PROGRAMA.");
  50.  
  51.            // Pulse cualquier tecla para salir.
  52.            Console.ReadKey();
  53.        }
  54.  
  55.        private static void ConsigueComponentes(string hwclass, string syntax)
  56.        {
  57.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  58.            foreach (ManagementObject mj in mos.Get())
  59.            {
  60.                if (Convert.ToString(mj[syntax]) != "")
  61.                {
  62.                    Console.WriteLine(datos = Convert.ToString(mj[syntax]));
  63.                }
  64.            }
  65.        }
  66.    }
  67. }

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.


Título: Re: Detecta disco en el elctor
Publicado por: Meta en 22 Marzo 2021, 18:44 pm
Hola:

Parace ser que por fin me funciona.
Código
  1. using System;
  2. using System.Management; // No olvidar. Añadir en Referencia.
  3.  
  4. namespace Detectar_disco_lector_consola_01
  5. {
  6.    class Program
  7.    {
  8.        // Variables.
  9.        public static string datos = "";
  10.        static void Main(string[] args)
  11.        {
  12.  
  13.            ConsigueComponentes("Win32_CDROMDrive", "MediaLoaded");
  14.  
  15.            // ¿Disco en el lector?
  16.            if (datos == "True")
  17.            {
  18.                Console.WriteLine("Disco en el lector: Sí.");
  19.            }
  20.  
  21.            else
  22.            {
  23.                Console.WriteLine("Disco en el lector: No.");
  24.            }
  25.  
  26.            // Pulse cualquier tecla para salir.
  27.            Console.ReadKey();
  28.        }
  29.  
  30.        private static void ConsigueComponentes(string hwclass, string syntax)
  31.        {
  32.            ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM " + hwclass);
  33.            foreach (ManagementObject mj in mos.Get())
  34.            {
  35.                if (Convert.ToString(mj[syntax]) != "")
  36.                {
  37.                    datos = Convert.ToString(mj[syntax]);
  38.                }
  39.            }
  40.        }
  41.    }
  42. }

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.