C#U盘监视自动强制弹出工具 效果图:
源码说明:
一个USB强制弹出小工具,能够自动弹出刚插入的U盘或手动指定弹出,做成指定工具可对插入的U盘进行数据访问或强制禁用。
监听工具基于系统消息实现,重写了WndProc函数,可以获取到插入U盘的盘符以及其他信息:
[C#] 纯文本查看 复制代码 protected override void WndProc(ref Message m)//监视Windows消息
{
const int WM_DEVICECHANGE = 0x219;
const int WM_DEVICEARRVIAL = 0x8000;//如果m.Msg的值为0x8000那么表示有U盘插入
const int WM_DEVICEMOVECOMPLETE = 0x8004;
switch (m.Msg)
{
case WM_DEVICECHANGE:
{
ShowDeviceChanged("WM_DEVICECHANGE");
if (m.WParam.ToInt32() == WM_DEVICEARRVIAL)
{
DriveInfo[] s = DriveInfo.GetDrives();
foreach (DriveInfo t in s)
{
if (t.DriveType == DriveType.Removable)
{
richTextBox.AppendText("U盘插入,盘符为:" + t.Name + "\r\n");
EjectUsb(t.Name);//强制移除
Remove();//强制移除
break;
}
}
ShowDeviceChanged("WM_DEVICEARRVIAL");
return;
}
else if (m.WParam.ToInt32() == WM_DEVICEMOVECOMPLETE)
{
ShowDeviceChanged("WM_DEVICEMOVECOMPLETE");
return;
}
}
break;
}
base.WndProc(ref m); //将系统消息传递自父类的WndProc
}
需要注意的是该代码只是基础代码,如果想要扩展其他功能例如自动访问数据等只需要根据获取到的盘符来操作就行了。源码中在获取到新的U盘以后立刻进行了自动移除,如果想手动移除就把代码注释掉,就是这两句:
[C#] 纯文本查看 复制代码 EjectUsb(t.Name);//根据盘符初始化设备
Remove();//强制移除
案例源码下载:
|