- 題名: 専用USBメモリカートリッジの挿入を感知につきまして
- 日時: 2008/09/07 17:10:58
- ID: 22944
- この記事の返信元:
- (なし)
- この記事への返信:
- [22945] Re[1]: 専用USBメモリカートリッジの挿入を感知につきまして2008/09/07 21:00:08
- ツリーを表示
■No22951に返信(AS0907さんの記事)
>> ttp://yaplog.jp/orator/archive/76
(^^;
> しかし専用USBメモリカートリッジには抜き差しても反応しませんでした。
ふたつ確認させてください。
(1)どのようなデバイスなのかよく分からなかったのですが、やりたいことは
その専用機器の(PCへの)接続判断でしょうか。それとも、その専用機器に対する
メモリカートリッジの挿抜判断なのでしょうか。
(2) 反応しなかった、というのは、SysInfo の DeviceArrival イベントが発生しなかった
という意味でしょうか。それとも、イベントそのものは発生しているものの、
ドライブレターが無いために、先のサンプルでは検出できなかったという意味でしょうか。
> 専用USBメモリカートリッジの抜き差しにより何か識別番号のようなものが確認できればと思っています。
DeviceArrival イベント(あるいは WM_DEVICECHANGE) の通知が発生しないのであれば、
『WMI』経由で、何かしらの情報を得られないか試してみてください。
http://msdn.microsoft.com/en-us/library/aa389273.aspx
http://www.microsoft.com/japan/msdn/columns/scripting/scripting06112002.aspx
たとえば、Win32_USBControllerDevice クラスとか。
Dim device As Object
For Each device In GetObject("winmgmts:").InstancesOf("Win32_USBControllerDevice")
Debug.Print "-----"
Debug.Print device.Antecedent
Debug.Print device.Dependent
Next
一方、DeviceArrival イベントが発生するのであれば、そこから何か
追加情報を得ることができるかも知れません。まずはデバイスタイプを
調べてみてください。DeviceArrival イベントの場合は、DeviceType 引数、
WM_DEVICECHANGE メッセージの場合は wparam がそれにあたります。
(OS の種類によって、異なるパラメータが返される可能性があります)
'=== 以下、Windows SDK v6.0 の DBT.H より ===
Const DBT_DEVTYP_OEM As Long = &H0
Const DBT_DEVTYP_DEVNODE As Long = &H1
Const DBT_DEVTYP_VOLUME As Long = &H2
Const DBT_DEVTYP_PORT As Long = &H3
Const DBT_DEVTYP_NET As Long = &H4
Const DBT_DEVTYP_DEVICEINTERFACE As Long = &H5
Const DBT_DEVTYP_HANDLE As Long = &H6
Const DBT_DEVNODES_CHANGED As Long = &H7 'ハードウェア構成が変更された
Const DBT_QUERYCHANGECONFIG As Long = &H17
Const DBT_CONFIGCHANGED As Long = &H18
Const DBT_CONFIGCHANGECANCELED As Long = &H19
Const DBT_MONITORCHANGE As Long = &H1B
Const DBT_SHELLLOGGEDON As Long = &H20
Const DBT_CONFIGMGAPI32 As Long = &H22
Const DBT_VXDINITCOMPLETE As Long = &H23
Const DBT_NO_DISK_SPACE As Long = &H47
Const DBT_LOW_DISK_SPACE As Long = &H48
Const DBT_CONFIGMGPRIVATE As Long = &H7FFF
Const DBT_DEVICEARRIVAL As Long = &H8000 'デバイスが追加された
Const DBT_DEVICEQUERYREMOVE As Long = &H8001 'デバイスを削除する許可を求めてきた
Const DBT_DEVICEQUERYREMOVEFAILED As Long = &H8002 'デバイスの削除がキャンセルされた
Const DBT_DEVICEREMOVEPENDING As Long = &H8003 'デバイスが削除されようとしている
Const DBT_DEVICEREMOVECOMPLETE As Long = &H8004 'デバイスは削除された
Const DBT_DEVICETYPESPECIFIC As Long = &H8005 'デバイス固有のイベント
Const DBT_CUSTOMEVENT As Long = &H8006
Const DBT_VOLLOCKQUERYLOCK As Long = &H8041
Const DBT_VOLLOCKLOCKTAKEN As Long = &H8042
Const DBT_VOLLOCKLOCKFAILED As Long = &H8043
Const DBT_VOLLOCKQUERYUNLOCK As Long = &H8044
Const DBT_VOLLOCKLOCKRELEASED As Long = &H8045
Const DBT_VOLLOCKUNLOCKFAILED As Long = &H8046
Const DBT_VPOWERDAPI As Long = &H8100
Const DBT_USERDEFINED As Long = &HFFFF
分類:[VB6以前]
お世話になります。
専用USBメモリカートリッジの挿入を感知するプログラムにつきまして
USBハブに専用USBメモリカートリッジの挿入を感知しましたらデバイスインスタンス
ID(VID、PID)を照合して確認できればと願っています。
USBメモリカートリッジの挿入を感知し、それが専用USBメモリカートリッジか確認する
事は可能でしょうか。参考となるような事でもありましたら、ご授受を願えれば幸いです。
よろしくお願い致します。