/// <summary> /// 允许一个窗口或者服务接收所有硬件的通知 /// 注:目前还没有找到一个比较好的方法来处理如果通知服务。 /// </summary> /// <param name="callback"></param> /// <param name="UseWindowHandle"></param> /// <returns></returns> public bool AllowNotifications(IntPtr callback, bool UseWindowHandle) { try { Externs.DEV_BROADCAST_DEVICEINTERFACE dbdi = new Externs.DEV_BROADCAST_DEVICEINTERFACE(); dbdi.dbcc_size = Marshal.SizeOf(dbdi); dbdi.dbcc_reserved = 0; dbdi.dbcc_devicetype = Externs.DBT_DEVTYP_DEVICEINTERFACE; if (UseWindowHandle) { Externs.RegisterDeviceNotification(callback, dbdi, Externs.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | Externs.DEVICE_NOTIFY_WINDOW_HANDLE); } else { Externs.RegisterDeviceNotification(callback, dbdi, Externs.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES | Externs.DEVICE_NOTIFY_SERVICE_HANDLE); } return(true); } catch (Exception ex) { string err = ex.Message; return(false); } }