Как написать код C# для чтения и копирования данных с любого съемного устройства
Я хочу разработать приложение windows(используя C#) для копирования содержимого съемного устройства(подключенного через кабель передачи данных).Когда мы подключаем новое устройство, оно должно показывать обнаруженное сообщение, а также обеспечивать возможность считывания и копирования содержимого данных внутри этого устройства.
Что я уже пробовал:
Я использовал приведенный ниже код для обнаружения устройства, но он не показывает его содержимое
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DETECTUSB { public partial class Form1 : Form { [StructLayout(LayoutKind.Sequential)] public struct DevBroadcastVolume { public int Size; public int DeviceType; public int Reserved; public int Mask; public Int16 Flags; } private const int WM_DEVICECHANGE = 0X219; private const int DBT_DEVICEARRIVAL = 0X8000; private const int DBT_DEVICEREMOVECOMPLETE = 0X8004; private const int DBT_DEVICETYP_VOLUME = 0X00000002; protected override void WndProc(ref Message m) { base.WndProc(ref m); switch (m.Msg) { case WM_DEVICECHANGE: switch ((int)m.WParam) { case DBT_DEVICEARRIVAL: listBox1.Items.Add("new device connected"); int devType = Marshal.ReadInt32(m.LParam, 4); if(devType == DBT_DEVICETYP_VOLUME) { DevBroadcastVolume vol; vol = (DevBroadcastVolume) Marshal.PtrToStructure(m.LParam, typeof (DevBroadcastVolume)); listBox1.Items.Add("Mask is " + vol.Mask); } break; case DBT_DEVICEREMOVECOMPLETE: listBox1.Items.Add("device removed"); break; } break; } } public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); } private void Form1_Load(object sender, EventArgs e) { } } }
Я использовал приведенный ниже код для извлечения содержимого съемного диска, но он не показывает содержимое съемного устройства
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog FBD = new FolderBrowserDialog(); if (FBD.ShowDialog() == DialogResult.OK) { listBox1.Items.Clear(); string[] files = Directory.GetFiles(FBD.SelectedPath); string[] dires = Directory.GetDirectories(FBD.SelectedPath); foreach (string file in files) { listBox1.Items.Add(file); } foreach (string dir in dires) { listBox1.Items.Add(dir); } } } } }
Richard MacCutchan
Папки на съемных устройствах точно такие же, как и на стационарных устройствах. Вам нужно предоставить более подробную информацию.