1. 程式人生 > >C#檢測U盤是否插入

C#檢測U盤是否插入

定義 con 可用 cte 發生 def wndproc box default

    public partial class Form1 : Form
    {
        #region u盤屬性
        public const int WM_DEVICECHANGE = 0x219;//U盤插入後,OS的底層會自動檢測到,然後向應用程序發送“硬件設備狀態改變“的消息
        public const int DBT_DEVICEARRIVAL = 0x8000;  //就是用來表示U盤可用的。一個設備或媒體已被插入一塊,現在可用。
        public const int DBT_CONFIGCHANGECANCELED = 0x0019;  //要求更改當前的配置(或取消停靠碼頭)已被取消。
public const int DBT_CONFIGCHANGED = 0x0018; //當前的配置發生了變化,由於碼頭或取消固定。 public const int DBT_CUSTOMEVENT = 0x8006; //自定義的事件發生。 的Windows NT 4.0和Windows 95:此值不支持。 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; //此消息的含義是用戶定義的 #endregion public Form1() { InitializeComponent(); } #region 檢測u盤 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盤插入 MessageBox.Show("U盤插入"); 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盤卸載 MessageBox.Show("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); } #endregion }

C#檢測U盤是否插入