Aquí hay un código que pulsando A o C abre o cierras la bandeja del lector, a parte de esto, dice Abierto, Abriendo... Cerrado y Cerrando... Todo esto pulsado las teclas A o C.
Me he dado cuenta que si cierro la bandeja directamente con la mano, en la ventana o en el CMD de C#, no lo sabe, se queda en Abierto. La idea es que si cierro la bandeja con la mano, en la pantalla muestre el mensaje.
¿Esto es posible de hacer?
Código:
Sólo debo modificar o ampliar esa función que falta para dejar el programa más completo.using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using static System.Net.Mime.MediaTypeNames; namespace Lector_teclado_consola_cs { class Program { [DllImport("winmm.dll")] public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hwndCallback); public static StringBuilder rt = new StringBuilder(127); public static void DoEvents() { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { })); Console.SetCursorPosition(0, 6); Console.Write("Abriendo..."); } public static void DoEvents2() { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { })); Console.SetCursorPosition(0, 6); Console.Write("Cerrando..."); } static void Main(string[] args) { // Título de la ventana. Console.Title = "Control lector de bandeja."; // Tamaño ventana consola. Console.WindowWidth = 55; // X. Ancho. Console.WindowHeight = 18; // Y. Alto. // Cursor invisible. Console.CursorVisible = false; // Posición del mansaje en la ventana. Console.SetCursorPosition(0, 0); Console.Write(@"Control bandeja del lector: A - Abrir bandeja. C - Cerrar bandeja. ==========================="); ConsoleKey key; //Console.CursorVisible = false; do { key = Console.ReadKey(true).Key; string mensaje = string.Empty; //Asignamos la tecla presionada por el usuario switch (key) { case ConsoleKey.A: // mensaje = "Abriendo..."; Console.SetCursorPosition(0, 6); DoEvents(); mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero); mensaje = "Abierto."; break; case ConsoleKey.C: // mensaje = "Cerrando..."; Console.SetCursorPosition(0, 6); DoEvents2(); mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero); mensaje = "Cerrado."; break; } Console.SetCursorPosition(0, 6); Console.Write(" "); Console.SetCursorPosition(0, 6); Console.Write(mensaje); } while (key != ConsoleKey.Escape); } } }
Saludos.