C#監控U盤插拔
【1】涉及的知識點
1) windows消息處理函數
protected override void WndProc(ref Message m)
捕獲Message的系統硬件改變發出的系統消息
2) 硬件信息類
DriveInfo
關鍵實現1:
掃描所有存儲設備,篩選出U盤
private void ScanDisk() { DriveInfo[] drives = DriveInfo.GetDrives(); foreach (var drive in drives) { // 可移動存儲設備,且不是A盤 if ((drive.DriveType == DriveType.Removable) && false == drive.Name.Substring(0, 1).Equals("A")) { Console.WriteLine("找到一個U盤:" + drive.Name); } } }
關鍵實現2:
監聽系統消息,在加載U盤時處理
const int WM_DeviceChange = 0x219; // 系統硬件改變發出的系統消息 const int DBT_DeviceArrival = 0x8000; // 設備檢測結束,并可以使用 const int DBT_DeviceRemoveComplete = 0x8004;// 設備移除 protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WM_DeviceChange) // 系統硬件改變發出的系統消息 { switch (m.WParam.ToInt32()) { case WM_DeviceChange: break; case DBT_DeviceArrival: ScanDisk(); // 掃描所有滿足特征的設備 break; case DBT_DeviceRemoveComplete: ScanDisk(); break; default: break; } } }
更多參考: C#.NET U盤插拔監控

浙公網安備 33010602011771號