特定のデバイスが USB ポートに接続されていることを検出する方法はありますか?ラップトップをドッキング ステーションに接続すると、さまざまなキーボード、マウス、およびモニターを説明するためにいくつかのアプリが実行されます。具体的には、G15 キーボード用の一部のソフトウェアに問題があり、メディア プレーヤーが正しく閉じられません。
うまくいけば.NETですが、そうでない場合は、提案をいただければ幸いです。
SharpUSBLibを使用してみてください。libusb プロジェクトの C# ラッパーです。
以下にコード サンプルを貼り付けます (ダウンロードに含まれています - 自分で試してみました)。シンプルに思えますし、USB 経由でラップトップに接続されたデバイスに関する非常に多くの情報を提供してくれると思います。
foreach (Bus bus in Bus.Busses)
{
Console.WriteLine(bus);
foreach (Descriptor descriptor in bus.Descriptors)
{
Console.WriteLine("\t" + descriptor);
try
{
using (Device device = descriptor.OpenDevice())
{
Console.WriteLine("\t\t Product: " + device.Product);
Console.WriteLine("\t\tManufacturer: " + device.Manufacturer);
Console.WriteLine();
}
}
catch (UsbException e)
{
Console.WriteLine("Got Exception : " + e);
}
}
}
WMI を調べて、ハードウェア情報を取得できます。