MIDI デバイスである Novation Launchpad のホットプラグをサポートする C# アプリケーションを作成しています。Win32API との関数&を使用するmidi-dot-net
ライブラリを使用しています。テストのために私はライブラリを使用していませんが。winmm.dll
midiInGetNumDevs
midiOutGetNumDevs
midi-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 を使用しても動作に影響はありませんでした。
どんな助けでも大歓迎です。