您将需要一个窗口,无法解决。这是一个示例实现。为DeviceChangeNotifier.DeviceNotify事件实现事件处理程序以获取通知。在程序开始时调用DeviceChangeNotifier.Start()方法。在程序末尾调用DeviceChangeNotifier.Stop()。请注意,DeviceNotify事件是在后台线程上引发的,请确保根据需要锁定以保持代码线程安全。
using System;using System.Windows.Forms;using System.Threading;class DeviceChangeNotifier : Form { public delegate void DeviceNotifyDelegate(Message msg); public static event DeviceNotifyDelegate DeviceNotify; private static DeviceChangeNotifier mInstance; public static void Start() { Thread t = new Thread(runForm); t.SetApartmentState(ApartmentState.STA); t.IsBackground = true; t.Start(); } public static void Stop() { if (mInstance == null) throw new InvalidOperationException("Notifier not started"); DeviceNotify = null; mInstance.Invoke(new MethodInvoker(mInstance.endForm)); } private static void runForm() { Application.Run(new DeviceChangeNotifier()); } private void endForm() { this.Close(); } protected override void SetVisibleCore(bool value) { // Prevent window getting visible if (mInstance == null) CreateHandle(); mInstance = this; value = false; base.SetVisibleCore(value); } protected override void WndProc(ref Message m) { // Trap WM_DEVICECHANGE if (m.Msg == 0x219) { DeviceNotifyDelegate handler = DeviceNotify; if (handler != null) handler(m); } base.WndProc(ref m); }}


