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); } } }
namespace ConsoleApplication1{ class Program { static void Main(string[] args) { USB usb; usb = new UDisk(); //插入U盘 usb.OutputFile(); //从U盘读出文件 usb.InputFile(); //往U盘写入文件 usb.Dispose(); //拔出U盘 Console.WriteLine(""); usb = new MDisk(); //插入移动硬盘 usb.OutputFile(); //从移动硬盘读出文件 usb.InputFile(); //往移动硬盘写入文件 usb.Dispose(); //拔出移动硬盘 Console.WriteLine(""); usb = new MP4(); //插入MP4 usb.OutputFile(); //从MP4读出文件 usb.InputFile(); //往MP4写入文件 usb.Dispose(); //拔出MP4 Console.ReadKey(); } //USB接口 public interface USB : IDisposable { void OutputFile(); //读出文件 void InputFile(); //写入文件 } //U盘 public class UDisk : USB { public UDisk() { Console.WriteLine("U盘准备就绪..."); } public void OutputFile() { Console.WriteLine("从U盘读出文件"); } public void InputFile() { Console.WriteLine("往U盘写入文件"); } public void Dispose() { Console.WriteLine("U盘已被拔出"); } } //移动硬盘 public class MDisk : USB { public MDisk() { Console.WriteLine("移动硬盘准备就绪..."); } public void OutputFile() { Console.WriteLine("从移动硬盘读出文件"); } public void InputFile() { Console.WriteLine("往移动硬盘写入文件"); } public void Dispose() { Console.WriteLine("移动硬盘已被拔出"); } } //MP4 public class MP4 : USB { public MP4() { Console.WriteLine("MP4准备就绪..."); } public void OutputFile() { Console.WriteLine("从MP4读出文件"); } public void InputFile() { Console.WriteLine("往MP4写入文件"); } public void Dispose() { Console.WriteLine("MP4已被拔出"); } } }}
C# USB通讯
最新推荐文章于 2024-04-18 15:44:29 发布