用什么方法可以实现一在电脑中插入USB移动硬盘,就在程序中响应一个事件?

wdj79 2003-11-20 09:27:42
用什么方法可以实现一在电脑中插入USB移动硬盘,或者在读卡器中插入存储卡,就在程序中响应一个事件?就象XP的那样,一插入外接设备就会弹出对话框.
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zswangII 2003-11-22
  • 打赏
  • 举报
回复
USB被看成一个驱动器~~
当激活或关闭的时候系统会给所有窗体发送一个WM_DEVICECHANGE消息~~
所以监控这个消息就可以实现了~~

type
TForm1 = class(TForm)
//....
private
procedure WMDEVICECHANGE(var Msg: TMessage); message WM_DEVICECHANGE;
//....
end;

procedure TFormBookBrowse.WMDEVICECHANGE(var Msg: TMessage);
const
DBT_DEVICEARRIVAL = $8000;
DBT_DEVICEREMOVECOMPLETE = $8004;
begin
inherited;
//用Msg.LParam区分是光驱还是USB,数值自己打日志得到~~
case Msg.WParam of
DBT_DEVICEARRIVAL: begin
{ TODO -oZswang -c2003-11-22 : 驱动器就绪 }
end;
DBT_DEVICEREMOVECOMPLETE: begin
{ TODO -oZswang -c2003-11-22 : 驱动器关闭 }
end;
end;
end;

cnhgj 2003-11-22
  • 打赏
  • 举报
回复
学习
Behard 2003-11-22
  • 打赏
  • 举报
回复
使用 RegisterDeviceNotification 函数的
不过可能要 D6 、VCSP6 或者 VC.net 才能直接编译

在 VC 中 需要在stdafx.h中定义 #define WINVER 0x0500 #include <dbt.h>
否则 HDEVNOTIFY 没有定义不过不知道能不能使用 DWORD 代替?
easyboot 2003-11-21
  • 打赏
  • 举报
回复
考虑中

关注
wdj79 2003-11-21
  • 打赏
  • 举报
回复
ding

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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