0

MIDI デバイスである Novation Launchpad のホットプラグをサポートする C# アプリケーションを作成しています。Win32API との関数&を使用するmidi-dot-netライブラリを使用しています。テストのために私はライブラリを使用していませんが。winmm.dllmidiInGetNumDevsmidiOutGetNumDevsmidi-dot-net

これは私のテストコードです:

using System;
using System.Runtime.InteropServices;

class NativeMethods
    {
        [DllImport("winmm.dll")]
        public static extern int midiInGetNumDevs();
        [DllImport("winmm.dll")]
        public static extern int midiOutGetNumDevs();

    }

class Program {
    static void Main(string[] arg) {
        while (true) {
            Console.WriteLine("In '" + NativeMethods.midiInGetNumDevs() + "', Out '" + NativeMethods.midiOutGetNumDevs() + "'");
        }
    }
}

結果は次のとおりです (テストする Launchpad が 2 つあります)。

デバイスを接続しても、表示される数字はまったく変化せず、プログラムは接続されたデバイスを登録していないようです。

ランチパッドの 1 つを取り外すと、接続されている数が減少しますが、1 回だけです。次に、2 番目のランチパッドを取り外しても、番号は変わりません。

この動作は、ここで説明されているように疑わしいように聞こえますが、これは Windows 8 の更新プログラムです。Windows 8 からの Windows 10 組み込みアップグレードを使用してアップグレードされたシステムを使用している間、KB はwinmm.dllバージョンの更新を提供します6.2.9200.16645が、私のシステムではバージョン10.0.10586.0です。推奨される DLL バージョンをサードパーティのサイトからダウンロードしようとしましたが、その DLL を使用しても動作に影響はありませんでした。

どんな助けでも大歓迎です。

4

0 に答える 0