您的位置:首页 > 编程语言 > C#

c# 监测U盘(Form)

2019-08-16 15:36 2216 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_40899924/article/details/99678208

WinForm 监测U盘真的很简单:
1.本案例需求,系统启动时检测一遍设备是否有U盘,将获取的结果显示
2.系统运行中监测U盘的插拔,并提示

笔记(设备管理事件)

主要使用的是下边的这些事件(设备管理事件)

public const int WM_DEVICECHANGE             = 0x219;//通知应用程序更改设备或计算机的硬件配置
public const int DBT_DEVICEARRIVAL           = 0x8000;//u盘插入**************************
public const int DBT_CONFIGCHANGECANCELED    = 0x0019;//当取消更改当前配置(停靠或取消停靠)
public const int DBT_CONFIGCHANGED           = 0x0018;//当前配置发生了变化
public const int DBT_CUSTOMEVENT             = 0x8006;//发生驱动程序定义的自定义事件时
public const int DBT_DEVICEQUERYREMOVE       = 0x8001;
public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;//当取消删除设备或介质的请求时
public const int DBT_DEVICEREMOVECOMPLETE    = 0x8004;//设备已经被清除********************
public const int DBT_DEVICEREMOVEPENDING     = 0x8003;//当移除设备或介质并且不再可用时
public const int DBT_DEVICETYPESPECIFIC      = 0x8005;//与设备有关的事件
public const int DBT_DEVNODES_CHANGED        = 0x0007;//设备节点发生了变化
public const int DBT_QUERYCHANGECONFIG       = 0x0017;//请求更改当前配置(停靠或取消停靠)的权限
public const int DBT_USERDEFINED             = 0xFFFF;

笔记(WndProc(ref Message m))

wndProc函数作用:主要用于捕获系统运行返回信息。
也可以通过override 重写wndpro,进行人为的篡改计算机的运行行为

捕获窗口运行时窗口动作信息,按键,鼠标,串口等等。。。也就是说不仅仅是监测U盘

protected override void WndProc(ref Message m)
{
try {
string UDeskName = "";
if (m.Msg == WM_LBUTTONDBLCLK)
richTextBox1.AppendText("【系统消息】双击左键");//比如这个按键
if (m.Msg == WM_DEVICECHANGE)//通知应用程序更改设备或计算机的硬件配置。
{
switch(m.WParam.ToInt32()){
case WM_DEVICECHANGE://通知应用程序更改设备或计算机的硬件配置。
break;
case DBT_DEVICEARRIVAL://U盘插入
//巴拉巴拉。。。。自己操作
break;
case DBT_CONFIGCHANGECANCELED:
break;
case DBT_CONFIGCHANGED:
break;
case DBT_CUSTOMEVENT:
break;
case DBT_DEVICEQUERYREMOVE://允许清除被请求的设备。任何应用程序都可以拒绝这个请求并取消清除操作。
break;
case DBT_DEVICEQUERYREMOVEFAILED://清除设备的请求被取消了
break;
case DBT_DEVICEREMOVECOMPLETE: //U盘卸载
ShowInfo("【系统消息】U盘已拔出" + GetNowTime());
break;
case DBT_DEVICEREMOVEPENDING://设备将要被清除。不能拒绝
break;
case DBT_DEVICETYPESPECIFIC:
break;
case DBT_DEVNODES_CHANGED://设备变化时
break;
case DBT_QUERYCHANGECONFIG:
break;
case DBT_USERDEFINED:
break;
default:
break;
}
}
}catch(Exception ex){
throw ex;
}
base.WndProc(ref m);
}

没了,最主要的就这两个:事件代码、WndProc(ref Message m)
捕获到相应的事件,然后就是干。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: