c#-檢查USB硬件變化

Windows消息事實就是一個數值。

private const int WM_DEVICECHANGE = 0x219; //設備改變
private const int DBT_DEVICEARRIVAL = 0x8000; //檢測到新設備
        private const int DBT_DEVICEREMOVECOMPLETE = 0x8004; //移除設備
        private const int DBT_DEVTYP_VOLUME = 0x00000002; //邏輯卷標
        const int DBT_CONFIGCHANGECANCELED = 0x0019; //配置改變取消
        const int DBT_CONFIGCHANGED = 0x0018; //配置改變
        const int DBT_CUSTOMEVENT = 0x8006;
        const int DBT_DEVICEQUERYREMOVE = 0x8001;

        const int DBT_DEVICEREMOVEPENDING = 0x8003;
        const int DBT_DEVICETYPESPECIFIC = 0x8005;
        const int DBT_DEVNODES_CHANGED = 0x0007;
        const int DBT_QUERYCHANGECONFIG = 0x0017;
        const int DBT_USERDEFINED = 0xFFFF;

        [StructLayout(LayoutKind.Sequential)]
        public struct DEV_BROADCAST_VOLUME
        {
            public int dbcv_size;
            public int dbcv_devicetype;
            public int dbcv_reserved;
            public int dbcv_unitmask;
        }

Wndproc是Windows操作系統嚮應用程序發送一系列消息之一,每個窗口會有一個窗口過程的回調函數,分別是窗口句柄、消息ID、WPARAM、LPARAM。
重寫WndProc函數,對不同消息事件進行處理

 protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);

            switch (m.Msg)
            {
                case WM_DEVICECHANGE:
                    switch ((int) m.WParam)
                    {
                        case DBT_DEVICEARRIVAL:
                            Console.WriteLine("新設備");
                            int devType = Marshal.ReadInt32(m.LParam, 4);
                            Console.WriteLine($"設備類型{devType}");
                            if (devType == DBT_DEVTYP_VOLUME)
                            {
                                Console.WriteLine("新設備");
                            }

                            break;
                        case DBT_DEVICEREMOVECOMPLETE:
                            Console.WriteLine("設備移除");
                            break;
                    }

                    break;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章