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)
捕获到相应的事件,然后就是干。。。
相关文章推荐
- C#用webbrowser在Form中嵌入并且操作Excel表格,如何让他不提示是否保存并取消保存
- C#2.0,winform程序,怎么样实现点击webBrowser某个链接,显示某个form
- C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作
- 在C#的Form中动态更改菜单、工具栏的状态
- SharpZipLib.dll 压缩文件,可以应用于MVC, webform. C# windows application 等等地方
- C# 轻松实现对窗体(Form)换肤[转]
- 初识 c# 事件机制 Form间通信示例
- C# WinForm开发系列2 - Form/Window
- C#为对话框form添加圆弧拐角
- c#自定义 Class Library(类库)与Windows Form Control Library(控件库)的区别
- c#监测文件的类---FileSystemWatcher
- C# 关于Form的一些属性设置
- C# FormClosing和FormClosed的区别
- C#:将子Form加入父Form中
- C# WinForm技巧“将Form嵌入到Panel”
- c# winform 让Form窗体上系统自带的红色关闭按钮失效,点击关闭变为隐藏
- C#中两个Form窗口之间的传值(父->子)(子->父)
- C#磁盘或U盘加密(创建加密区)
- 【C#】组件分享:FormDragger窗体拖拽器
- C#检测U盘插入拔出