Gå til innhold

[Løst]lage åpne/lukke program for cdrom i VB 2005


Anbefalte innlegg

hei jeg er ny på visual basic 2005.

 

lurte på om noen vet hvordan koden er for å åpne/lukke cdromen

er ikke ute etter å legge den ut på en annen sin pc slik at den går ut og inn hele tiden men at jeg kan trykke på åpne på dette programmet og cdromen åpner seg og når jeg trykker lukk så lukker den seg.

 

eventuelt en side som forteller om hva alle koder er til o.s.v

Endret av lordlappy
Lenke til kommentar
Videoannonse
Annonse

Bruk MCI sendstring.

 

Noe sånt i VB.NET 2005 (ikke testet):

 

Public Class Form1
   Private 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
   
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       mciSendString("Set CDAudio Door Open Wait", _
          0&, 0&, 0&)
   End Sub

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       mciSendString("Set CDAudio Door Closed Wait", _
          0&, 0&, 0&)
   End Sub
End Class

Endret av chills
Lenke til kommentar

A call to PInvoke function 'WindowsApplication2!WindowsApplication2.Form1::mciSendString' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

 

denne feilmeldingen kom opp på denne coden:

mciSendString("Set CDAudio Door Closed Wait", _

0&, 0&, 0&)

Endret av lordlappy
Lenke til kommentar

I VB .NET er Long (32-bit) kalt Integer, derfor må deklarasjonen av API-et endres:

 

Public Class Form1

  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 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

      mciSendString("Set CDAudio Door Open Wait", _

          0&, 0&, 0&)

  End Sub

 

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

      mciSendString("Set CDAudio Door Closed Wait", _

          0&, 0&, 0&)

  End Sub

End Class

Nå vet jeg ikke sikkert om koden fungerer, da jeg ikke har CD-/DVD-ROM på denne maskinen, men feilmeldingen er i det minste borte.

Endret av aadnk
Lenke til kommentar

Hm, jeg satte i en CD-ROM, men koden ville fremdeles ikke fungere. Etter litt om og men, fant jeg ut at den virtuelle DVD-ROMen var satt til default, og at en derfor måtte spesifisere diskbokstaven til enheten jeg satte inn:

 

Public Class Form1

 

    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 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        ' Bytt ut bokstavnavn med enheten til din CD-ROM

        SetDoorState("g:\", "open")

 

    End Sub

 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

 

        ' Gjør likeledes her

        SetDoorState("g:\", "closed")

 

    End Sub

 

    Public Sub SetDoorState(ByVal Device As String, ByVal newState As String)

 

        ' Åpne den angitte enhet som "cd1"

        mciSendString("open " & Device & " type cdaudio alias cd1", 0&, 0, 0)

 

        ' Sett dørstatus

        mciSendString("set cd1 door " & newState & " wait", 0&, 0, 0)

 

        ' Rydd opp

        mciSendString("close cd1", 0&, 0, 0)

 

    End Sub

 

End Class

Endret av aadnk
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...