none
Midi Mapper RRS feed

  • Frage

  • Hallo

    Ich möchte mit diesem code Midi not on befehle erzeugen. Das c&p code aber ich habe ihn soweit verstanden und debuggt

    Wenn ich jetzt meine form starten (Im Sub load wird der Sub open Midi)möchte kommt die MSG box mit dem Fehler das der Midi mapper nicht korreckt instaliert ist oder schon geöffnet sei.

    Was ist das Problem?

    Das ist der Ausschnitt aus m einem Modul.

    'Laden der APIs:
    
        Private Declare Function midiOutOpen Lib "winmm.dll" ( _
              ByVal lphMidiOut As Integer, ByVal uDeviceID As Integer, ByVal _
              dwCallback As Integer, ByVal dwInstance As Integer, ByVal _
              dwFlags As Integer) As Long
    
        Private Declare Function midiOutShortMsg Lib "winmm.dll" ( _
              ByVal hMidiOut As Integer, ByVal dwMsg As Integer) As Long
    
        Private Declare Function midiOutReset Lib "winmm.dll" ( _
              ByVal hMidiOut As Integer) As Long
    
        Private Declare Function midiOutClose Lib "winmm.dll" ( _
              ByVal hMidiOut As Integer) As Long
    
    'Deklarieren der Const:
    
        Private Const MIDI_MAPPER = -1
        Private hMidiOut As Long
    
    '...
    
        Public Sub OpenMIDI()
            Dim midiOpenError As Long
            Dim strMsg As String
    
    'Hier tritt der Fehler auf:
             midiOpenError& = midiOutOpen(hMidiOut, MIDI_MAPPER, 0, 0, CALLBACK_NULL)
           
    
            If midiOpenError Then
                strMsg = "Der MIDI Mapper kann nicht geöffnet werden. "
                strMsg = strMsg & "Er wird entweder bereits verwendet oder "
                strMsg = strMsg & "ist nicht korrekt installiert." & vbCrLf
                strMsg = strMsg & "Fehler " & midiOpenError
                MsgBox(strMsg, 48, "Fehler bei OpenMIDI")
    
                CloseMIDI()
                End
            End If
        End Sub

    Ist dieser Midimapper ein externes programm?

    Der Code stammt von http://www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0325.shtml

    Vielen Dank für eure Hilfe

    Julius Störrle

    Sonntag, 2. Dezember 2012 09:02

Antworten

  • Hallo

    Problem gelöst: Fehler beim Aufruf der APIs

     Private Declare Function midiOutOpen Lib "winmm.dll" ( _
              lphMidiOut As Integer, ByVal uDeviceID As Integer, ByVal _
              dwCallback As Integer, ByVal dwInstance As Integer, ByVal _
              dwFlags As Integer) As Long

    Bei lphMidiOut stand ein ByVal statt ByRef oder ""


    Julius Störrle

    • Als Antwort markiert Julius Störrle Sonntag, 2. Dezember 2012 14:55
    • Tag als Antwort aufgehoben Elmar Boye Sonntag, 2. Dezember 2012 18:00
    • Als Antwort markiert Julius Störrle Freitag, 14. Dezember 2012 09:02
    Sonntag, 2. Dezember 2012 14:55

Alle Antworten

  • Hallo Julius,

    zunächst ist das Beispiel für Visual Basic 6 geschrieben und die Declare Anweisungen passen nicht für Visual Basic .NET. Auf PInvoke findest Du korrektere Angaben z. B. midioutOpen

    Der Midi Mapper war ursprünglich eine Erweiterung für Soundkarten,
    bei Windows 7 fehlt sie jedoch im Standard, siehe
    http://www.borncity.com/blog/2010/07/01/midi-mapper-fr-windows-7/

    Gruß Elmar

    Sonntag, 2. Dezember 2012 10:54
  • Hallo Elmar

    ICh habe gesehen das der code für vb 6 ist und habe die ersten fehler korrigiert

    Ich habe den Polze... Midi mapper installiert mir word aber immer noch der gleiche Fehler angezeigt :(

    muss ich am code etwas ändern?

    Gruß

    Julius Störrle


    Julius Störrle

    Sonntag, 2. Dezember 2012 13:02
  • Hallo

    Problem gelöst: Fehler beim Aufruf der APIs

     Private Declare Function midiOutOpen Lib "winmm.dll" ( _
              lphMidiOut As Integer, ByVal uDeviceID As Integer, ByVal _
              dwCallback As Integer, ByVal dwInstance As Integer, ByVal _
              dwFlags As Integer) As Long

    Bei lphMidiOut stand ein ByVal statt ByRef oder ""


    Julius Störrle

    • Als Antwort markiert Julius Störrle Sonntag, 2. Dezember 2012 14:55
    • Tag als Antwort aufgehoben Elmar Boye Sonntag, 2. Dezember 2012 18:00
    • Als Antwort markiert Julius Störrle Freitag, 14. Dezember 2012 09:02
    Sonntag, 2. Dezember 2012 14:55
  • Hallo Julius,

    die Integer sind immer noch falsch - ein IntPtr ist was anderes.

    Spätestens wenn Du das Ganze unter einem 64-Bit Betriebssystem laufen lässt, fliegt Dir die Geschichte um die Ohren.

    Gruß Elmar

    Sonntag, 2. Dezember 2012 15:45