APLICACIÓN DE WINDOWS FORM PARA ANALIZAR Y ALMACENAR LAS CARACTERÍSTICAS DE TU PC EN LENGUAJE C#
Saludos querida comunidad de Steemit, esta vez les traigo una continuación de mi post pasado, se trata de una aplicación que nos ayuda a saber ciertas características de nuestra PC y así poder saber qué tipo de función puede realizar de una manera óptima. En el post pasado el programa fue hecho como aplicación de consola, pero esta vez mostraré como podemos hacerlo mediante Windows Form (Formularios de Windows) mediante el lenguaje de programación C# y usando Visual Studio 2015. El programa hace prácticamente lo mismo, la diferencia es el uso de Windows Form que nos proporcionará una interfaz más agradable de Microsoft Windows y el acceso a los elementos de su interfaz.
Brevemente explicaré el propósito del programa, el programa consiste en analizar las características de nuestro PC para tener un control de ellas y saber que tareas puedes desempañar de la mejor forma y tener guardados esos datos de una manera ordenada en un archivo XML el cual cumplirá la función de la base de datos del programa. Esta aplicación es portable y es debido a esto que decidí utilizar un archivo XML ya que si uso una base de datos tendría que instalarla en cada computador donde utilizaré el programa.
Como pueden notar en la Figura 1 allí muestro como está constituido el Form 1. Utilizo un label el cual se ubica en la parte superior del formulario el cual sirve para mostrar un texto en este caso “Introduzca su ID”, debajo del label se ubica un textbox el cual sirve para introducir un texto por el usuario y por último un button.
Dentro del constructor de este form utilizo un try catch, esto debido a que cada vez que corra el programa este va a crear el archivo XML, en el try (Línea 24) va a cargar el archivo XML y en caso de que este no este creado procede a colocarle el valor de FALSE a una variable booleana cuyo valor es TRUE (exists) la cual ayudará al programa para saber si debe o no crear el archivo XML. En caso de que el valor de esta variable sea TRUE entrara en el IF de la Línea 30 y cargará el archivo, si no es asín entonces entrará en el ELSE y creará el archivo XML, declarándolo, inicializándolo y creando los nodos padres (BDD, Usuarios y Equipos) y luego los agrega al XML.
En este Form utilizo dos botones, uno para continuar luego de que ingreso el ID y otro para continuar luego de colocar el nombre. Al igual que el programa anterior el primer botón no va a continuar si el textbox está vacío o si tiene caracteres no numéricos (En caso de que esto suceda aparecerá un label en el cual les dirá que debe colocar el ID del usuario). Luego de que se ingresen caracteres numéricos y se le dé al botón de aceptar se hará un chequeo en EL ARCHIVO XML para ver si el ID existe, en caso de que exista dará paso a cerrar el Form 1 y abrirá el Form 2. En caso de que no exista entonces aparecerá otro mensaje para ingresar el nombre del usuario y una vez este haya ingresado su nombre sus datos se guardaran en el archivo XML y se dará paso a cerrar el Form 1 y abrir el Form 2.
Este diseño es muy simple, sólo posee 3 botones. El primer botón se encarga de abrir el form 3 que se encargará de hacer el análisis de la PC, el segundo botón se encarga de abrir el form 4 el cual se encarga de eliminar los equipos registrados y el tercer botón se encarga de abrir el form 5 el cual nos mostrará la lista de nuestros equipos registrados.
En la publicación anterior les hablé de cómo puedo obtener las características tanto a nivel de software como de hardware mediante C#, y es mediante la iniciativa Windows Management Instrumentation. A continuación, presentó el diseño y código del Windows Form 3:
Este form posee un Rich TextBox donde se mostrarán las características que analizará el programa, y por un botón para volver al form 2. Lo primero que realiza el programa al entrar a este form es crear el equipo en el XML (Línea 53) y el primer atributo que guarda en ese nodo es el ID del usuario al cual pertenece ese equipo (Línea 54, 55 y 56). Luego en la Línea 57 se refiere al namespace para después ejecutar el query (consulta) en la Línea 58. Para obtener los resultados de los queries se realiza una iteración mediante un foreach el cual va recorriendo la tabla y devuelve cada uno de los elementos de la tabla, que en este caso es el disco duro, el cual nos devuelve la capacidad del disco duro y también el espacio libre que cada disco duro del computador posee.
Este proceso se hace para cada consulta que queramos realizar como por ejemplo la memoria RAM, sistema operativo, arquitectura del procesador, etc. Las características integradas en el análisis son las siguientes:
- Disco Duro: Win32_LogicalDisk.
- Memoria RAM: Win32_PhysicalMemory.
- Sistema Operativo: Win32_OperatingSystem.
- Procesador: Win32_Processor.
- Serial de la Placa Base: Win32_Baseboard.
Cada computador al ser guardado debe tener una clave primaria, es decir, un dato único que lo identifique, en este caso yo guardo el equipo con su respectivo serial para evitar que el computador se guarde más de una vez, en caso de que se escaneé varias veces el mismo equipo este simplemente será modificado.
Este form contiene 2 label, un listbox y dos botones. El listbox nos permite elegir un elemento de la lista con un click.
Este método consiste en crear una lista con los seriales de las computadoras, mediante un foreach se recorre el archivo XML para buscar si existen computadores según el ID del usuario. En caso de que no se consiga ninguno la variable i que es un contador será igual a 0 y en ese caso mostrará un mensaje diciendo que no hay equipos registrados, en caso de que si los haya entonces mostrará en el listbox todos los computadores. El método eliminar es el mismo que uso en la aplicación de consola de la publicación pasada, el método recibe el serial del pc y mediante un foreach recorre todo el XML y verifica mediante cada iteración que el serial que fue pasado por referencia se encuentre en este, una vez que se encuentre este es borrado.
Este form está constituido por un rich textbox donde se mostrarán las computadoras con sus respectivas características, y 3 botones. Uno de los botones es el de volver que simplemente nos devuelve al form 2 y los otros dos botones son para avanzar y retroceder cuya función es que en caso de que hayan más de dos computadores estos nos permiten avanzar o retroceder en la lista para ver los computadores que se encuentran en ella.
El Load del Windows Form consiste en recorrer el XML y buscar todos los equipos que tienen el ID del usuario, en caso de conseguirlos procede a guardarlos en un String que se llama resultados y al final del load se llama al método mostrar para así reflejar en el rich textbox los computadores.
En el método mostrar verifico si hay equipos registrados mediante un contador, en caso de que sea 0 muestro el mensaje de que no hay equipos registrados, sino muestro en el rich textbox el string resultado. Los botones para avanzar y retroceder estarán desactivados mientras no haya ningún equipo registrado o sólo haya uno. El método getNombre simplemente recorre el XML y cuando encuentre el ID del usuario devolverá el nombre registrado.
A continuación, les dejo un video donde podrán observar el programa listo y como es su comportamiento:
- Libro: C# 5.0 in a Nutshell. O' REILLY.
- Libro: C# 6 y Visual Studio 2015: Los fundamentos del lenguaje. Sébastien Putier.
Hola @merlinrosales96. Interesante publicación. Una pregunta: ¿tu aplicación es software libre/código abierto?
Muchas gracias por tu comentario @eniolw. Si lo es, el codigo es mio y no tiene ningún derecho de autor. Esto es para fines educativos y es totalmente reusable. ¡Saludos!
Ok... En ese caso lo indicado es que digas donde se puede hallar y descargar el código fuente. Podrías habilitar un enlace a un archivo alojado en una nube o mejor aún si es en GitHub. Poder descargar el código de la aplicación es lo que termina de hacer la lección genial, porque transcribir todo eso puede ser a veces engorroso. Éxito.
Muy bien amigo, habilitaré esa opción, muchas gracias por el consejo. Atento al link del código
Hi @merlinrosales96!
Your post was upvoted by utopian.io in cooperation with steemstem - supporting knowledge, innovation and technological advancement on the Steem Blockchain.
Contribute to Open Source with utopian.io
Learn how to contribute on our website and join the new open source economy.
Want to chat? Join the Utopian Community on Discord https://discord.gg/h52nFrV
Congratulations @merlinrosales96! You have received a personal award!
1 Year on Steemit
Click on the badge to view your Board of Honor.
Do not miss the last post from @steemitboard:
SteemitBoard World Cup Contest - France vs Croatia
Participate in the SteemitBoard World Cup Contest!
Collect World Cup badges and win free SBD
Support the Gold Sponsors of the contest: @good-karma and @lukestokes