C++ 怎么判断 “有个USB 设备插入了电脑了”提醒user

zjj_zjj 2009-02-19 02:29:15
C++ 怎么判断 “有个USB 设备插入了电脑了”提醒user?
...全文
314 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Allen_zhang 2009-02-20
  • 打赏
  • 举报
回复
楼上已经说得很清楚了
不过你的usb设备必须要有驱动才行
ysysbaobei 2009-02-20
  • 打赏
  • 举报
回复
mark,顶下
oyljerry 2009-02-19
  • 打赏
  • 举报
回复 3
当设备被插入/拔出的时候,WINDOWS会向每个窗体发送WM_DEVICECHANGE 消息,当消息的wParam 值等于 DBT_DEVICEARRIVAL 时,表示Media设备被插入并且已经可用;如果wParam值等于DBT_DEVICEREMOVECOMPLETE,表示Media设备已经被移出。

它们的lParam都指向一个 DEV_BROADCAST_HDR结构体,其原形如下:

1 typedef struct _DEV_BROADCAST_HDR

2 {

3 DWORD dbch_size;

4 DWORD dbch_devicetype;

5 DWORD dbch_reserved;

6 } DEV_BROADCAST_HDR, *PDEV_BROADCAST_HDR;

这个结构体仅仅是一个“头”(HDR),其后还有附加数据,dbch_size表示结构体实例的字节数,当其中的dbch_devicetype字段值等于DBT_DEVTYP_VOLUME时,表示当前设备是逻辑驱动器,且lParam实际上指向的应该是DEV_BROADCAST_VOLUME 结构体实例(真佩服这种逻辑),DEV_BROADCAST_VOLUME 结构体原形如下:

1 typedef struct _DEV_BROADCAST_VOLUME {

2 DWORD dbcv_size;

3 DWORD dbcv_devicetype;

4 DWORD dbcv_reserved;

5 DWORD dbcv_unitmask;

6 WORD dbcv_flags;

7 } DEV_BROADCAST_VOLUME, *PDEV_BROADCAST_VOLUME;

其中dbcv_unitmask 字段表示当前改变的驱动器掩码,第一位表示驱动器号A,第二位表示驱动器号B,第三位表示驱动器号C,以此类推…… dbcv_flags 表示驱动器的类别,如果等于1,则是光盘驱动器;如果是2,则是网络驱动器;如果是硬盘、U盘则都等于0
oyljerry 2009-02-19
  • 打赏
  • 举报
回复
处理WM_DEVICECHANGE消息...
zjj_zjj 2009-02-19
  • 打赏
  • 举报
回复
应该发到 C++ builder API 那块的,不过人气太低,所以请问大家有没有做过这方面的,帮个忙啊
zjj_zjj 2009-02-19
  • 打赏
  • 举报
回复
对阿, OS里面有驱动阿,但是现在需要在程序上显示出来
不知道怎么插图进来
画了一下:
|————————————————————|
| |
|O 提示USER是否几经接入USB Floppy |
| 否则确认按钮是灰色的。 |
| |确定 | |
|————————————————————
VirGhost 2009-02-19
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1282
waizqfor 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 zjj_zjj 的帖子:]
C++ 怎么判断 “有个USB 设备插入了电脑了”提醒user?
[/Quote]
MS是听说过啊
我感觉也是驱动的事 这个要根据具体设备来定义吧
  • 打赏
  • 举报
回复
这是驱动来判断的。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧