今回は[DeviceID]にて操作を行いたい機器のピックアップを行います。
操作を行いたい機器の[DeviceID]を格納する配列を用意します。
機器の[DeviceID]の調べ方はこちらを参照。
検出したデバイスの詳細情報を取得し、操作を行いたいデバイス状態を調べれる状態にします。
(ManagementObjectオブジェクトの[Properties]プロパティにて取得)
[Win32_PnPEntity]の詳細情報についてはこちらを参照。
class Program
{
// 情報取得コマンド
static ManagementObjectSearcher MyOCS = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");
// 取得Object格納
static ManagementObjectCollection MyOC;
/// 接続許可機器のDeviceid格納
static string[] Array_Permit_DeviceID = { "USBSTOR\\DISK&VEN_BUFFALO&PROD_USB_FLASH_DISK&REV_4000\\A085001000075193&0" ,
"USBSTOR\\DISK&VEN_BUFFALO&PROD_EXTERNAL_HDD&REV_0000\\00000002032664A&0"};
static void Main(string[] args)
{
//接続されてるPnPDeviceの総数
int CountDevice = MyOCS.Get().Count;
//1Scan前のPnPDeviceの総数
int CountDeviceBefour = CountDevice;
//検出デバイスのDeviceIDを一時格納
string Value_DeviceID = string.Empty;
//ループ動作(←ループ条件は、後程要検証)
while (true)
{
MyOC = MyOCS.Get();
CountDevice = MyOC.Count;
if (CountDevice != CountDeviceBefour)//ここでデバイス数変化時の処理を行う。
{
string[] Array_DeviceID;//取得ID分解用配列
foreach (ManagementObject MyObject in MyCollection)
{
Value_DeviceID = MyObject["DeviceID"].ToString();
Array_DeviceID = Value_DeviceID.Split('\\');
if (Array_DeviceID[0].Contains("USB"))//ここで検出時の処理を行う。
{
for (int i = 0; i < Array_Permit_DeviceID.Length; i++)
{
if (Array_Permit_DeviceID[i] == Value_DeviceID)//ここでDeviceIDが一致した場合の処理を行う。
{break;}
}
}
}
Array_DeviceID = null;
}
CountDeviceBefour = CountDevice;
}
}
}
ここまでは、デバイスの情報取得と特定となります。
間違い、指摘事項が御座いましたら御教授の程、御願い致します。
【各ページへのリンク】
この記事へのコメント