none
Abrir y cerrar bandeja de discos con Visual Basic 6 RRS feed

  • Pregunta

  • Hola:

    Quiero ahcer un programa con Visual Basic 6 abrir y cerrar la bandeja del lector de discos. Con Visual Basic .net 2017 funciona de maravilla, pero no se programa igual de VB 6 al VB 2017.

    Para facilitarles la tarea les dejo un ejemplo hecho con VB 2017. Así podrán ayudarme a pasarlo a VB 6 si es posible.

    Imports System.Runtime.InteropServices
    Imports System.Text
    
    Public Class Form1
        <DllImport("winmm.dll")>
        Public Shared Function mciSendString(lpstrCommand As String, lpstrReturnString As StringBuilder,
                                             uReturnLength As Integer, hwndCallback As IntPtr) As Int32
        End Function
    
        Private rt As New StringBuilder(127)
    
        Private Sub Button_Abrir_Click(sender As Object, e As EventArgs) Handles Button_Abrir.Click
            Label_Mensaje.Text = "Abriendo..."
            Application.DoEvents()
            mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero)
    
            ' Si quieres por ejemplo elegir la unidad que quieras, en este caso la H, se le asigana !H
            ' como indica abajo. En vez de CDAudio, CDAudio!H.
            'mciSendString("set CDAudio!H door open", rt, 127, IntPtr.Zero);
    
            Label_Mensaje.Text = "Abierto."
        End Sub
    
        Private Sub Button_Cerrar_Click(sender As Object, e As EventArgs) Handles Button_Cerrar.Click
            Label_Mensaje.Text = "Cerrando..."
            Application.DoEvents()
            mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero)
            Label_Mensaje.Text = "Cerrado."
        End Sub
    End Class

    ¿Alguna posibilidad?

    Saludos.


    http://electronica-pic.blogspot.com

    jueves, 16 de noviembre de 2017 20:07

Respuestas

  • PRIVATE Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, _ ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer Private Sub Command_Abrir_Click() Label_Mensaje.Caption = "Abriendo..."

    DOEVENTS

    ' Justo aquí falta un evento tal como ocurre con VB .net para que muestre ' el mensaje "Abriendo...". En caso de no poner nada como ahora, no muestra ' el mensaje "Abriendo...". retvalue = mciSendString("set CDAudio door open", returnstring, 127, 0) Label_Mensaje.Caption = "Abierto." End Sub Private Sub Command_Cerrar_Click() Label_Mensaje.Caption = "Cerrando..."

    DOEVENTS

    ' Va un evento. retvalue = mciSendString("set CDAudio door close", returnstring, 127, 0) Label_Mensaje.Caption = "Cerrado." End Sub

    • Marcado como respuesta Metaconta sábado, 18 de noviembre de 2017 1:23
    sábado, 18 de noviembre de 2017 0:13

Todas las respuestas

  • hola  ya haz preguntado en 3 lenguajes de programación este mismo procedimiento (java,vb6, y delphi) te falta python, php, Go... ruby... cual es el propósito de tu pregunta??
    viernes, 17 de noviembre de 2017 19:56
  • Hola:

    Y lo seguiré preguntado ya que quiero tener todos los lenguajes que me interesa menos los que has nombrado para tenerlo todos en Word o PDF, eso si, con todo lujo de detalles. ;)

    ¿Lo tienes claro?

    Eso espero. ;)

    He intentado harcelo así pero nome sale en VB 6.

    Código VB6:

    Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, _
    ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
    
    
    
    Private Sub Command_Abrir_Click()
    Label_Mensaje.Caption = "Abriendo..."
    ' Justo aquí falta un evento tal como ocurre con VB .net para que muestre
    ' el mensaje "Abriendo...". En caso de no poner nada como ahora, no muestra
    ' el mensaje "Abriendo...".
    retvalue = mciSendString("set CDAudio door open", returnstring, 127, 0)
    Label_Mensaje.Caption = "Abierto."
    End Sub
    
    Private Sub Command_Cerrar_Click()
    Label_Mensaje.Caption = "Cerrando..."
    ' Va un evento.
    retvalue = mciSendString("set CDAudio door close", returnstring, 127, 0)
    Label_Mensaje.Caption = "Cerrado."
    End Sub

    Hay que hacer dos cosas.

    1) Lograr que me funcione todo en un mismo archivo.
    2) Lograr los mensajes de Abriendo..., Abierto., Cerrando... y Cerrado.

    ¿Alguna idea?

    Saludos.


    http://electronica-pic.blogspot.com

    viernes, 17 de noviembre de 2017 23:36
  • PRIVATE Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, _ ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer Private Sub Command_Abrir_Click() Label_Mensaje.Caption = "Abriendo..."

    DOEVENTS

    ' Justo aquí falta un evento tal como ocurre con VB .net para que muestre ' el mensaje "Abriendo...". En caso de no poner nada como ahora, no muestra ' el mensaje "Abriendo...". retvalue = mciSendString("set CDAudio door open", returnstring, 127, 0) Label_Mensaje.Caption = "Abierto." End Sub Private Sub Command_Cerrar_Click() Label_Mensaje.Caption = "Cerrando..."

    DOEVENTS

    ' Va un evento. retvalue = mciSendString("set CDAudio door close", returnstring, 127, 0) Label_Mensaje.Caption = "Cerrado." End Sub

    • Marcado como respuesta Metaconta sábado, 18 de noviembre de 2017 1:23
    sábado, 18 de noviembre de 2017 0:13
  • Hola:

    Al principio no me cerrraba la badeja con

    retvalue = mciSendString("set CDAudio door close", returnstring, 127, 0)

    Porque me di cuenta que la palabra close tiene que ser closed, terminado con la letra d.

    retvalue = mciSendString("set CDAudio door closed", returnstring, 127, 0)

    Gracias por todo.


    http://electronica-pic.blogspot.com

    sábado, 18 de noviembre de 2017 1:24