读取USB设备的问题

cenlmmx 2007-02-15 12:15:32
1. 程序自动监测USB设备是否插入和相应的盘符
2. 读取设备上的文件和保存文件到设备上.

就是这两个需求,但没找到比较好的lib.(开发环境: 2003)
...全文
599 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenlmmx 2007-03-02
  • 打赏
  • 举报
回复
试试.net2.0的 DriveInfo
--------------------
惨,还没用到2.0啊.

拦截你程序一个窗口的消息循环
---------------------
谢谢,我在WndProc里拦截了的.但感觉还是很粗糙.

总之,谢谢大家了.
yitian130 2007-02-23
  • 打赏
  • 举报
回复
试试.net2.0的 DriveInfo
string DriveName;
do{
DriveInfo[] drivers = DriveInfo.GetDrives();
foreach(dirveinfo dirveA in dirves){
if(dirveA.DriveType==Removable){
DriveName=dirveA.Name;
return;
}

}

}while(true)



//只大概写了一下,楼主自己试试
yitian130 2007-02-23
  • 打赏
  • 举报
回复
顶,
yitian130 2007-02-20
  • 打赏
  • 举报
回复
学习,期待~!
VirtualDesktop 2007-02-20
  • 打赏
  • 举报
回复
拦截你程序一个窗口的消息循环,如果有usb存储设备插入,会有WM_DEVICECHANGE消息到达
我看了看你上面的代码,有用WMI的,这也可以,但是感觉WMI不大稳定,有时检测不到

这个是我以前的提问,现在解决了,可是我没有用过C#实现,不过 C#是肯定没问题的
http://community.csdn.net/Expert/topic/4837/4837132.xml?temp=.8857538
jxf654 2007-02-17
  • 打赏
  • 举报
回复
up
yaotong 2007-02-16
  • 打赏
  • 举报
回复
你是不是想做病毒呀?
zxkid 2007-02-16
  • 打赏
  • 举报
回复
http://www.lvr.com/usb.htm

希望对你有用
cenlmmx 2007-02-16
  • 打赏
  • 举报
回复
谢谢楼上兄弟,现在遇到一个问题:
如果插入普通的USB,能够得到U盘的盘符,但如果插入MP3,则得不到.
下面是关键代码:
private string GetUSBVol()
{
string ret = string.Empty;
try
{
// browse all USB WMI physical disks
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("select * from Win32_DiskDrive where InterfaceType='USB'");

foreach(ManagementObject drive in searcher.Get())
{
// associate physical disks with partitions
foreach(ManagementObject partition in new ManagementObjectSearcher(
"ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"]
+ "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get())
{
// associate partitions with logical disks (drive letter volumes)
foreach(ManagementObject disk in new ManagementObjectSearcher(
"ASSOCIATORS OF {Win32_DiskPartition.DeviceID='"
+ partition["DeviceID"]
+ "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())
{
string vol = disk["Name"].ToString();
DialogResult r = MessageBox.Show(this,"Are you sure " + vol.ToUpper() + " is volumn of USB device?", Global.CON_TITLE_QUESTION,
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if(r == DialogResult.Yes)
{
ret = vol;
return ret;
}
}
}
}
}
catch(Exception ex)
{
LoggerService.logger.Error("Getting volumn of USB device fail!", ex);
}
return ret;
}
jxf654 2007-02-15
  • 打赏
  • 举报
回复
up
jinanjiang 2007-02-15
  • 打赏
  • 举报
回复
他的例子就很简单的
正好全你的问题1
cenlmmx 2007-02-15
  • 打赏
  • 举报
回复
第二点已经没什么问题,那第一点怎么达到?
楼上推荐的正在看,能有更简单的方法吗?
jinanjiang 2007-02-15
  • 打赏
  • 举报
回复
看看这个可以不?
http://www.codeproject.com/useritems/usbeject.asp
cangwu_lee 2007-02-15
  • 打赏
  • 举报
回复
路过


ruan_hg 2007-02-15
  • 打赏
  • 举报
回复
1
http://www.codeproject.com/w2k/usbdisks.asp
2
fileinfo类

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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