USB设备插入与拔出的响应

有时候,我们需要检测到USB设备的插入与拔出事件,比如,一个有加密锁的程序,当加密锁拔出时,程序应当给出相应提示,并可能采取退出程序的举措。要达到这个目的,我们可以通过响应WM_DEVICECHANGE消息来达到这个目的,而WPARAM则可以告诉我们USB设备是插入还是拔出的。如果WPARAM为DBT_DEVICEARRIVAL则是插入事件,如果为DBT_DEVICEREMOVECOMPLETE则为删除事件。这两个宏义于头文件Dbt.h中。以下以VC为例做成例子。

1. 在相关cpp文件中加入头文包含:
#include
2. 在相应类中添加函数:
LRESULT CtestUsbChangeDlg::OnDeviceChange(WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case DBT_DEVICEARRIVAL: //插入
MessageBox("设备插入!");
break;
case DBT_DEVICEREMOVECOMPLETE: //删除
MessageBox("设备删除!");
break;
}
return LRESULT();
}

3. 添加消息映射:
BEGIN_MESSAGE_MAP(CTestUsbChangeDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_DEVICECHANGE, OnDeviceChange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

至此,程序已经可以检测USB设备的插入与拨出操作了。事实上,WM_DEVICECHANGE不只支持USB设备的插入与拔出,其它支持热插拔的设备也应支持,不过,因条件所限,只能测试USB设备的情况。其它设备如有网友能测试,希望能告诉我测试结果。
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值