用什么方法可以实现一在电脑中插入USB移动硬盘,就在程序中响应一个事件? 用什么方法可以实现一在电脑中插入USB移动硬盘,或者在读卡器中插入存储卡,就在程序中响应一个事件?就象XP的那样,一插入外接设备就会弹出对话框. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用 RegisterDeviceNotification 函数的不过可能要 D6 、VCSP6 或者 VC.net 才能直接编译在 VC 中 需要在stdafx.h中定义 #define WINVER 0x0500 #include <dbt.h>否则 HDEVNOTIFY 没有定义不过不知道能不能使用 DWORD 代替? 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; 请jadeluo(秀峰)来回答问题!谢谢 怎么截取区域内屏幕 如何将TABLE中的数据导到WORD? 怎么样使得在程序结束后,程序窗体自动关掉? 求救!如何重定向BDE引擎位置? stringgrid列显示的问题? 如何通过判断PageControl的标签页的焦点,来选择不同的语句? 有用MySql的朋友请说说MyODBC2.5的怪事。 这段sql代码错误多多,请帮我看看。 Help me! 如何向inifile中写入注释? Tchart中怎样显示很粗的虚线?在线等待!
不过可能要 D6 、VCSP6 或者 VC.net 才能直接编译在 VC 中 需要在stdafx.h中定义 #define WINVER 0x0500 #include <dbt.h>
否则 HDEVNOTIFY 没有定义不过不知道能不能使用 DWORD 代替?
当激活或关闭的时候系统会给所有窗体发送一个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;