1. 程序自动监测USB设备是否插入和相应的盘符
2. 读取设备上的文件和保存文件到设备上.就是这两个需求,但没找到比较好的lib.(开发环境: 2003)
2. 读取设备上的文件和保存文件到设备上.就是这两个需求,但没找到比较好的lib.(开发环境: 2003)
解决方案 »
- winform+mysql打包
- SideBar的使用
- dataGridView中单元格只能输入数字后要保使数字保留两位小数,怎么弄呀???
- c#中一条特殊的存储过程的问题(散分过后没分了,但是希望高手能解答该问题)
- 我装vs.net2005提示升级win2003 service pack1,但安装时候出现错误!
- C#中的RTTI机制?
- c# 占用内存问题
- 解决方案中项目间的引用问题。
- 如何判断一个datatable是否有了变化?
- DevExpress的tileNavPane导航如何设置弹出对应的窗体
- 迅龙中文搜索 0.7 nSearch版 C# 源代码下载
- 菜鸟求助:在C#里面如何判断网络是否中断啊?也就是Socket通讯失败!
http://www.codeproject.com/w2k/usbdisks.asp
2
fileinfo类
http://www.codeproject.com/useritems/usbeject.asp
如果插入普通的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;
}
我看了看你上面的代码,有用WMI的,这也可以,但是感觉WMI不大稳定,有时检测不到这个是我以前的提问,现在解决了,可是我没有用过C#实现,不过 C#是肯定没问题的
http://community.csdn.net/Expert/topic/4837/4837132.xml?temp=.8857538
string DriveName;
do{
DriveInfo[] drivers = DriveInfo.GetDrives();
foreach(dirveinfo dirveA in dirves){
if(dirveA.DriveType==Removable){
DriveName=dirveA.Name;
return;
}
}}while(true)//只大概写了一下,楼主自己试试
--------------------
惨,还没用到2.0啊.拦截你程序一个窗口的消息循环
---------------------
谢谢,我在WndProc里拦截了的.但感觉还是很粗糙.总之,谢谢大家了.