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( _
"rootCIMV2", _
"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
http://dobon.net/vb/bbs/log3-45/27263.html