Trabajando con MFC al crear formularios, me salía esta ventana al final en el cual podía ejecutar al pulsar F5 para compilar. Ver zoom. Aquí abajo dejo una guía paso a paso de crear un formulario MFC como se hacía antes desde la página 36, hasta la página 45. Ver visor. Ver pdf. Intenté seguir los pasos, la primera ventana me sale esto.
No se cual es la mejor forma de hacerlo. Lo dejo tal cual por si acaso y sigo a la página siguiente. Sigo el siguiente paso. Siguiente paso. Siente paso. Antes al ejecutar no me daba problemas. Ahora me salen todos estos errores indicado abajo y no se como solucionarlo.
¿Hay alguna solución?
Antes, podía ejecutar la ventana y no pasaba nada.
Saludos.
PD: Disculpen si no me sale el tamaño adecuado de las capturas.
PrivateSharedFunction mciSendString(sCommand AsString, sReturn As StringBuilder, cchReturn As UInteger, hwnd As IntPtr)As UInteger
EndFunction
Hola oki:
Module1.bas:
Código:
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _ ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
frmcd.frm[/U]:
Código:
Private Sub Command1_Click()
On Error Resume Next Command2.Visible = True Command1.Visible = False frmcd.Caption = "Abriendo. . . ." retvalue = mciSendString("set CDAudio door open", returnstring, 127, 0)
End Sub
Private Sub Command2_Click()
On Error Resume Next Command1.Visible = True Command2.Visible = False frmcd.Caption = "Cerrando. . . ." retvalue = mciSendString("set CDAudio door closed", returnstring, 127, 0)
End Sub
Private Sub Form_Load()
On Error Resume Next Command1.Visible = True Command2.Visible = False frmcd.Caption = "C D . . . "
Quiero adaptar este código de C++ CLR a C++ Win32. Antes que nada, quiero saber si es posible o hay que complicarse mucho la vida para hacer lo mismo. El código lo que hace es abrir y cerrar la bandeja de cualquier lector de discos sea IDE o SATA.
Aquí encontré un vídeo pero solo ejecuta, y abre el lector en Win32. Por algo se empieza.
También queiro saber lo que buscas, saber si el lector está cerrado o abierto el programa, sea del lenguaje que sea. Por ejemplo, si meto con la mano la bandeja, entra solo y el programa sabe cuando está abierto la bandeja o no. Si tngo l abandeja abierta por Windows, ejecuto después el programa, que detecte si está abierto. Los programas que puse arriba no lo sabe.
¿Qué información quieres sacar exactamente con status?
La verdad no se el motivo.
Mi objeto al tema principal que pregunto. Es conseguir el mismo resultado de abrir y cerrar la bandeja del lector de disco con el lenguaje F#. Puse otros lenguajes que si funciona de C#, VB y C++ para que lo entienda mucha gente. Mi problema que no se hacerlo con F#.
Quiero pasar este código en consola de C#, VB .net o el C++ CLR a F#. Lo que hace el código es si pulsas A o la letra C abre o cierra la bandeja del lector de discos. A parte de C#, también está en C++ CLR y VB .net por si lo entienden mejor. Lo que hace el código es abrir y cerrar la bandeja de discos del lector, sea IDE o SATA.
Código C#:
Código:
using System; using System.Runtime.InteropServices; using System.Text;
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. C#";
Module Module1 <DllImport("winmm.dll")> Public Function mciSendString(lpstrCommand As String, lpstrReturnString As StringBuilder, uReturnLength As Integer, hwndCallback As IntPtr) As Int32 End Function
Public rt As New StringBuilder(127)
Public Sub DoEvents() ' Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { })); Console.SetCursorPosition(0, 6) Console.Write("Abriendo...") End Sub
Public Sub DoEvents2() ' Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { })); Console.SetCursorPosition(0, 6) Console.Write("Cerrando...") End Sub
Sub Main() ' Título de la ventana. Console.Title = "Control lector de bandeja. Visual Basic"
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:
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.";