6、U盘插拔检测

code public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
public const int DBT_DEVICEARRIVAL = 0x8000;
public const int WM_DEVICECHANGE = 0x219;
protected override void WndProc(ref Message m)
{
try
{
if (m.Msg == WM_DEVICECHANGE)
{
switch (m.WParam.ToInt32())
{
case DBT_DEVICEARRIVAL://U盘插入
if (myConfig.ClientEnabled)
{
UDiskWatcher.UDiskArrival();
}
break;
case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
UDiskWatcher.UDiskRemove();
break;
default:
break;
}
}
}
catch (Exception ex)
{
throw new Exception("系统消息过滤异常:" + ex.Message);
}
base.WndProc(ref m);
}
通过重写Form的WndProc方法实现监听系统消息,然后过滤消息类型,
当检测到有U盘插入的时候去做相应的一些动作,

codeDriveInfo[] s = DriveInfo.GetDrives();
foreach (DriveInfo drive in s)
{
if (drive.DriveType == DriveType.Removable)//如果是移动设备
{
}
}
当检测到U盘插入后自己通过遍历所有设备查找所有移动设备,去进行自己的操作。