C# 接口通讯 想学习C# USB接口的数据通讯。例如读取U盘的文件。不懂USB,大家给提供一个学习的方法和路径啊~! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO;namespace U盘更新 { public partial class Form1 : Form { public const int WM_DEVICECHANGE = 0x219; public const int DBT_DEVICEARRIVAL = 0x8000; public const int DBT_CONFIGCHANGECANCELED = 0x0019; public const int DBT_CONFIGCHANGED = 0x0018; public const int DBT_CUSTOMEVENT = 0x8006; public const int DBT_DEVICEQUERYREMOVE = 0x8001; public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002; public const int DBT_DEVICEREMOVECOMPLETE = 0x8004; public const int DBT_DEVICEREMOVEPENDING = 0x8003; public const int DBT_DEVICETYPESPECIFIC = 0x8005; public const int DBT_DEVNODES_CHANGED = 0x0007; public const int DBT_QUERYCHANGECONFIG = 0x0017; public const int DBT_USERDEFINED = 0xFFFF; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } protected override void WndProc(ref Message m) { try { if (m.Msg == WM_DEVICECHANGE) { switch (m.WParam.ToInt32()) { case WM_DEVICECHANGE: break; case DBT_DEVICEARRIVAL://U盘插入 DriveInfo[] s = DriveInfo.GetDrives(); foreach (DriveInfo drive in s) { if (drive.DriveType == DriveType.Removable) { listBox1.Items.Add("U盘已插入,盘符为:" + drive.Name.ToString()); break; } } break; case DBT_CONFIGCHANGECANCELED: break; case DBT_CONFIGCHANGED: break; case DBT_CUSTOMEVENT: break; case DBT_DEVICEQUERYREMOVE: break; case DBT_DEVICEQUERYREMOVEFAILED: break; case DBT_DEVICEREMOVECOMPLETE: //U盘卸载 break; case DBT_DEVICEREMOVEPENDING: break; case DBT_DEVICETYPESPECIFIC: break; case DBT_DEVNODES_CHANGED: break; case DBT_QUERYCHANGECONFIG: break; case DBT_USERDEFINED: break; default: break; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } base.WndProc(ref m); } } private void DirSearch(string p) { try { foreach (string f in Directory.GetFiles(p,this.textBox1.Text.ToString().Trim())) { this.listView1.Items.Add(f); } foreach (string d in Directory.GetDirectories(p)) { DirSearch(d); } } catch (Exception err) { } } System.IO.DirectoryInfo DirInfo = new DirectoryInfo(Path); DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory; using System.IO; File.Copy("c:\\a.txt", "d:\\a.txt",true); 后面的参数允许覆盖true,不可以覆盖false http://topic.csdn.net/u/20090705/22/88b44fc7-cd12-49f8-aab9-34ce1bb93eb7.html 可以搜搜usblib的代码看看http://sblpp.blog.163.com/blog/static/1073879201072891329989/ 只要知道了U盘对应的盘符,和读取硬盘文件没区别,这就是sp123要说的 [求助]动态绑定lookupedit的数据源 C# 实现一个拦截接口,达到事件同样的效果 怎样删除listview中的数据? 正则表达式 在线等 【求助】c#中怎么从文件中读取数据结构 C#开发手机通信问题 好问的弟弟.再次出现... 啊哦!我写了个Class怎么不能在WinForm中实例化。 dataGrid里添加行的问题 C#winform上有5个按钮。其中点击一个一次,其余4个按顺序执行一次。 关于中国工商网银的登录接口问题??? C#如何避免连续按两次按钮
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace U盘更新
{
public partial class Form1 : Form
{
public const int WM_DEVICECHANGE = 0x219;
public const int DBT_DEVICEARRIVAL = 0x8000;
public const int DBT_CONFIGCHANGECANCELED = 0x0019;
public const int DBT_CONFIGCHANGED = 0x0018;
public const int DBT_CUSTOMEVENT = 0x8006;
public const int DBT_DEVICEQUERYREMOVE = 0x8001;
public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;
public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
public const int DBT_DEVICEREMOVEPENDING = 0x8003;
public const int DBT_DEVICETYPESPECIFIC = 0x8005;
public const int DBT_DEVNODES_CHANGED = 0x0007;
public const int DBT_QUERYCHANGECONFIG = 0x0017;
public const int DBT_USERDEFINED = 0xFFFF; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ }
protected override void WndProc(ref Message m)
{
try
{
if (m.Msg == WM_DEVICECHANGE)
{
switch (m.WParam.ToInt32())
{
case WM_DEVICECHANGE:
break;
case DBT_DEVICEARRIVAL://U盘插入
DriveInfo[] s = DriveInfo.GetDrives();
foreach (DriveInfo drive in s)
{
if (drive.DriveType == DriveType.Removable)
{
listBox1.Items.Add("U盘已插入,盘符为:" + drive.Name.ToString());
break;
}
}
break;
case DBT_CONFIGCHANGECANCELED:
break;
case DBT_CONFIGCHANGED:
break;
case DBT_CUSTOMEVENT:
break;
case DBT_DEVICEQUERYREMOVE:
break;
case DBT_DEVICEQUERYREMOVEFAILED:
break;
case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
break;
case DBT_DEVICEREMOVEPENDING:
break;
case DBT_DEVICETYPESPECIFIC:
break;
case DBT_DEVNODES_CHANGED:
break;
case DBT_QUERYCHANGECONFIG:
break;
case DBT_USERDEFINED:
break;
default:
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
base.WndProc(ref m);
}
}
private void DirSearch(string p)
{
try
{
foreach (string f in Directory.GetFiles(p,this.textBox1.Text.ToString().Trim()))
{
this.listView1.Items.Add(f);
}
foreach (string d in Directory.GetDirectories(p))
{
DirSearch(d);
}
}
catch (Exception err)
{
}
}
System.IO.DirectoryInfo DirInfo = new DirectoryInfo(Path);
DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;
using System.IO; File.Copy("c:\\a.txt", "d:\\a.txt",true); 后面的参数允许覆盖true,不可以覆盖false
http://sblpp.blog.163.com/blog/static/1073879201072891329989/