- 題名: USBメモリのシリアル取得について
- 日時: 2010/09/02 11:07:28
- ID: 27263
- この記事の返信元:
- (なし)
- この記事への返信:
- [27264] Re[1]: USBメモリのシリアル取得について2010/09/02 11:32:09
- ツリーを表示
魔界の仮面弁士さんの方法で試したところうまくいきました。 簡易に別スレッドを立ててテストしてみました。 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) Select Case m.Msg Case WM_DEVICECHANGE Select Case m.WParam.ToInt32 Case DBT.DBT_DEVICEARRIVAL Dim t As New Thread(New ThreadStart(AddressOf worker)) t.Start() Case DBT.DBT_DEVICEREMOVECOMPLETE End Select Case Else End Select MyBase.WndProc(m) End Sub Sub worker() Try Dim Licences() As String = {"XXXXXXX", "XXXXXXX"} '指定したシリアル Dim searcher As New ManagementObjectSearcher( _ "root\CIMV2", _ "SELECT * FROM Win32_DiskDrive where InterfaceType='USB'") For Each queryObj As ManagementObject In searcher.Get() Find_Flg = False For i As Int16 = 0 To Licences.Length - 1 If Licences(i) <> queryObj("PNPDeviceID") Then 'シリアルが一致しない場合 '省略・・・・ Eject(queryObj("DeviceID")) 'CM_Request_Device_Ejectにて取り外し End If Next Next Catch err As ManagementException MessageBox.Show("An error occurred while querying for WMI data: " & err.Message) End Try End Sub USBメモリ検知 → あらかじめ登録されているシリアルか確認 → 未登録 → デバイスの自動取り外し という流れでうまくテストできました。 有難う御座いました。
分類:[.NET]