私が取り組んでいるアプリケーションはスキャナーを使用していますが、これはいくつかのタイプのいずれかに属している可能性があります。接続されているスキャナーを特定し、接続されているスキャナーからデフォルトのスキャナーを選択するオプションを提供し、必要に応じてこの選択を変更する必要があります。これまでのところ、私はこの解決策を思いつきました:
ManagementObjectSearcher search = new System.Management.ManagementObjectSearcher("SELECT * From Win32_PnPEntity");
ManagementObjectCollection deviceCollection = search.Get();
foreach (ManagementObject info in deviceCollection)
{
string deviceName = Convert.ToString(info["Caption"]);
if( /* check something about deviceName */)
{
// add a scanner to the list
}
}
情報[「キャプション」]で何を期待するかを知っているので、これは私にとってはうまくいきます。ただし、いくつかの質問があります。
- デバイスが「イメージング デバイス」の下にあることはわかっています。すべての PnP デバイスをループせずに、「イメージング デバイス」ブランチのメンバーのみを識別する方法はありますか? 私の PC では、deviceCollection に 190 のエントリがあることがわかりました。ほんの数個に絞り込むと本当にいいでしょう。:)
- 接続されるスキャナーのモデル/タイプについて事前にわからないシナリオで、デバイスがスキャナーであることを識別する方法はありますか?