ハードウェアの監視
Posted: 2008年4月02日(水) 13:43
こんにちは。AB初心者の7342という者です。
パソコンに接続されたハードウェア(USB機器,マウス,キーボード,...)を監視するアプリケーションを作りたいのですが、どなたか良い方法を教えてください。
パソコンに接続されたハードウェア(USB機器,マウス,キーボード,...)を監視するアプリケーションを作りたいのですが、どなたか良い方法を教えてください。
コード: 全て選択
TypeDef HDEVNOTIFY = VoidPtr
Type DEV_BROADCAST_DEVICEINTERFACE
dbcc_size As DWord
dbcc_devicetype As DWord
dbcc_reserved As DWord
dbcc_classguid As GUID
dbcc_name[1] As Char
End Type
Type PDEV_BROADCAST_HDR
dbch_size As DWord
dbch_devicetype As DWord
dbch_reserved As DWord
End Type
Declare Function RegisterDeviceNotification Lib "User32.dll" Alias "RegisterDeviceNotificationA" (hRecipient As HANDLE, ByRef NotificationFilter As DEV_BROADCAST_DEVICEINTERFACE, Flags As DWord) As HDEVNOTIFY
Declare Function UnregisterDeviceNotification Lib "User32.dll" (hDevNotify As HDEVNOTIFY) As Long
Const DBT_DEVTYP_DEVICEINTERFACE = &h00000005
Const DEVICE_NOTIFY_WINDOW_HANDLE = &h00000000
Const DBT_DEVICEARRIVAL = &h8000
Const DBT_DEVICEREMOVECOMPLETE = &h8004
コード: 全て選択
Function RegisterForDeviceNotify(hWnd As HWND) As HDEVNOTIFY
Dim InterfaceClassGuid = [&h378de44c, &h56ef, &h11d1,[&hbc, &h8c, &h00, &ha0, &hc9, &h14, &h05, &hdd]] As GUID'USBマウス
'Dim InterfaceClassGuid = [&h53F5630D, &hB6BF, &h11D0,[&h94, &hF2, &h00, &ha0, &hc9, &h1E, &hFB, &h8B]] As GUID'USBメモリなど
Dim hNotify As HDEVNOTIFY
Dim NotificationFilter As DEV_BROADCAST_DEVICEINTERFACE
NotificationFilter.dbcc_size = SizeOf(DEV_BROADCAST_DEVICEINTERFACE)
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE
NotificationFilter.dbcc_classguid = InterfaceClassGuid
hNotify = RegisterDeviceNotification(hWnd, NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE)
RegisterForDeviceNotify = hNotify
End Function
Sub OnDeviceChange(hwnd As HWND, wParam As WPARAM, lParam As LPARAM)
Dim szMsg[128] As Char
Dim lpdb As *PDEV_BROADCAST_HDR
lpdb = lParam As *PDEV_BROADCAST_HDR
Select Case wParam
Case DBT_DEVICEARRIVAL
Select Case lpdb->dbch_devicetype
Case DBT_DEVTYP_DEVICEINTERFACE
OutputDebugString(Ex"Plugged In\n")
End Select
Case DBT_DEVICEREMOVECOMPLETE
Select Case lpdb->dbch_devicetype
Case DBT_DEVTYP_DEVICEINTERFACE
OutputDebugString(Ex"Plugged Out\n")
End Select
End Select
End Sub
コード: 全て選択
Dim hDevNotify As HDEVNOTIFY
コード: 全て選択
hDevNotify = RegisterForDeviceNotify(hMainWnd)
コード: 全て選択
UnregisterDeviceNotification(hDevNotify)