社区
硬件/系统
帖子详情
WM_DEVICECHANGE得到的消息,如何判断新设备是否是u盘??是否是光驱
0313700000
2005-07-22 05:46:33
111
...全文
2359
5
打赏
收藏
WM_DEVICECHANGE得到的消息,如何判断新设备是否是u盘??是否是光驱
111
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
0313700000
2005-08-08
打赏
举报
回复
已经解决了,GetDriveType只能得到小容量的,大容量的u盘使用这个函数判断不出来
谢谢
Joe
2005-07-24
打赏
举报
回复
GetLogicalDrives();得到所有的盘符.
GetDriveType(DriveItem);的返回值为Removable即为U盘
saliors
2005-07-23
打赏
举报
回复
LRESULT CTestUSBDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_DEVICECHANGE) //0x8000,0x8004
{
CString str;
DEV_BROADCAST_HDR* dhr = (DEV_BROADCAST_HDR *)lParam;
switch(wParam)
{
case DBT_CONFIGCHANGECANCELED:
TRACE("DBT_CONFIGCHANGECANCELED");
break;
case DBT_CONFIGCHANGED:
TRACE("DBT_CONFIGCHANGED");
break;
case DBT_DEVICEQUERYREMOVE:
TRACE("DBT_DEVICEQUERYREMOVE");
break;
case DBT_DEVICEQUERYREMOVEFAILED:
TRACE("DBT_DEVICEQUERYREMOVEFAILED");
break;
case DBT_DEVICEREMOVEPENDING:
TRACE("DBT_DEVICEREMOVEPENDING");
break;
case DBT_DEVICETYPESPECIFIC:
TRACE("DBT_DEVICETYPESPECIFIC");
break;
case DBT_QUERYCHANGECONFIG:
TRACE("DBT_QUERYCHANGECONFIG");
break;
case DBT_USERDEFINED:
TRACE("DBT_USERDEFINED");
break;
case DBT_DEVICEARRIVAL:
if(dhr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)dhr;
if(lpdbv->dbcv_flags & DBTF_MEDIA)
{
str.Format("Drive %c 插入", FirstDriveFromMask(lpdbv ->dbcv_unitmask));
//AfxMessageBox(str);
}
else
{
char ch = FirstDriveFromMask(lpdbv ->dbcv_unitmask);
str.Format("%c:\\",ch);
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if(dhr->dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)dhr;
if(lpdbv->dbcv_flags & DBTF_MEDIA)
{
str.Format("Drive %c 拔除",FirstDriveFromMask(lpdbv ->dbcv_unitmask));
}
else
{
str.Format("Drive %c 拔除",FirstDriveFromMask(lpdbv ->dbcv_unitmask));
}
//AfxMessageBox(str);
}
break;
default:
break;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
oyljerry
2005-07-23
打赏
举报
回复
还可以通过判断设备容量等来区分
AntonlioX
2005-07-22
打赏
举报
回复
可以得到设备的类型 判断它是不是光盘
如果不是 那就是u盘
====
个人观点 如果有误 请包含
C#监控usb
设备
插拔--已经测试
/// /// 处理windows
消息
/// /// protected override void WndProc(ref Message m) { try { if (m.Msg ==
WM
_
DEVICE
CHANGE
) { switch (m.WParam.ToInt32()) { case
WM
_
DEVICE
CHANGE
: //MessageBox.Show("
判断
检测...
VC++实现USB 硬盘等硬件插拔检测
首先捕捉
WM
_
DEVICE
CHANGE
消息
,该
消息
在usb插拔时均有触发。 MFC下 添加
消息
处理函数afx_msg BOOL On
Device
Change
( UINT nEventType, DWORD dwData ); 添加
消息
映射BEGIN_MESSAGE_MAP() ... ON_
WM
_...
Qt重写nativeEvent监测
光驱
插入自动读取光盘内容并将内容发送至FTP
有时候我们需要监控计算机外接
设备
的接入,比如
U盘
、CD、DVD等,那么有没有办法是当有
U盘
或者
光驱
开始运作后,程序自动将外接
设备
中的所有内容复制出来,甚至传到另外一台计算机中去呢?下面介绍如何通过重写bool ...
检测USB
设备
插入和拔出
由于工作需要,前段时间一直在找关于在C#中如何检测USB
设备
的资料,其实C#中使用的函数也是引用的操作系统提供的API函数,还不如在C++中写方便,于是自己简单的写了一个检测USB
设备
插入和拔出的程序。 程序写完之后...
当有
U盘
插入时,读取
U盘
中的所有文件
声明接受WindowProc
消息
的处理函数,1、如果
消息
是
WM
_DEVI
CHANGE
则有磁盘更改
消息
,那么将进行处理2、如果参数lparam是DEV_BROADCAST_HDR结构,进行下一步处理,否则不处理3、如果该结构的dbch_
device
type是DBT_...
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章