CD Rom Laufwerke öffnen und schließen mit Angabe des Laufwerkbuchstaben

    • VB.NET

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von freakyJoker.

      CD Rom Laufwerke öffnen und schließen mit Angabe des Laufwerkbuchstaben

      Hier mal ein Kurzer Code der ein CD Rom Laufwerk öffnet bzw. schließt.

      VB.NET-Quellcode

      1. Private Declare Function mciSendString Lib "winmm.dll" Alias _
      2. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
      3. lpstrReturnString As String, ByVal uReturnLength As _
      4. Long, ByVal hwndCallback As Long) As Long
      5. Private Sub Btn_Open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Open.Click
      6. Open_Tray(TextBox1.Text.Trim, True)
      7. End Sub
      8. Private Sub Btn_Close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Close.Click
      9. Open_Tray(TextBox1.Text.Trim, False)
      10. End Sub
      11. Private Sub Open_Tray(ByVal Letter As String, ByVal Open As Boolean)
      12. Dim Drive As String = Letter.Substring(0, 1)
      13. Dim Action As String = String.Empty
      14. Select Case Open
      15. Case True
      16. Action = " Door Open"
      17. Case False
      18. Action = " Door Closed"
      19. Case Else
      20. Exit Sub
      21. End Select
      22. mciSendString(String.Concat("Open ", Drive, ": Alias ", "Laufwerk", Drive, " Type CDAudio"), String.Empty, 0, 0)
      23. mciSendString(String.Concat("Set ", "Laufwerk", Drive, Action), String.Empty, 0, 0)
      24. End Sub
      Ich bekomme leider den folgenden Fehler PInvokeStackImbalance wurde erkannt bei der Zeile

      VB.NET-Quellcode

      1. mciSendString(String.Concat("Open ", Drive, ": Alias ", "Laufwerk", Drive, " Type CDAudio", String.Empty, 0, 0)

      Was kann ich dagegen tun?
      Also ich habe es grade getestet

      Win XP.

      VB.NET-Quellcode

      1. Private Declare Function mciSendString Lib "winmm.dll" Alias _
      2. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
      3. lpstrReturnString As String, ByVal uReturnLength As _
      4. Integer, ByVal hwndCallback As Integer) As Integer


      da gehts

      zeig mal bitte deinen Code.

      danke

      Edit:
      bei meiner Frau gehts auch. Die hat irgendwas mit ner 7 auf dem Desktop stehen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bernd“ ()

      funktioniert :)

      Ich habe den Fehler gefunden:

      Ich habe statt den 3 Longs nur 2 auf Integer ausgebessert, also

      VB.NET-Quellcode

      1. Private Declare Function mciSendString Lib "winmm.dll" Alias _
      2. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
      3. lpstrReturnString As String, ByVal uReturnLength As _
      4. Long, ByVal hwndCallback As Int32) As Int32


      statt

      VB.NET-Quellcode

      1. Private Declare Function mciSendString Lib "winmm.dll" Alias _
      2. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
      3. lpstrReturnString As String, ByVal uReturnLength As _
      4. Int32, ByVal hwndCallback As Int32) As Int32


      funktionier jetzt, danke für deine Hilfe :)

      Mit freundlichen Grüßen, freakyjoker