c# 监测U盘(Form)

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)
捕获到相应的事件,然后就是干。。。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows Forms 是一个用于创建 Windows 桌面应用程序的图形用户界面(GUI)框架。它是 C# 语言中的一部分,可以帮助开发人员快速构建功能丰富的窗体应用程序。 Windows Forms 提供了一组丰富的控件,例如按钮、文本框、标签、列表框等,开发人员可以使用这些控件来设计应用程序的用户界面。通过事件处理机制,开发人员可以为控件添加交互逻辑,并响应用户的操作。 在 Visual Studio 中创建 Windows Forms 应用程序非常简单。你可以选择新建一个 Windows Forms 应用程序项目,然后通过拖拽和放置控件来设计界面,使用 C# 代码来编写控件的事件处理逻辑。 以下是一个简单的示例代码,演示了如何在 Windows Forms 应用程序中显示一个窗体: ```csharp using System; using System.Windows.Forms; namespace WindowsFormsApp { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello, World!"); } } } ``` 上述代码创建了一个名为 `MainForm` 的窗体,并在窗体中添加了一个按钮。当按钮被点击时,会弹出一个包含 "Hello, World!" 文本的消息框。 这只是一个简单的示例,Windows Forms 还提供了更多功能和控件,以满足不同的应用程序需求。你可以通过学习更多关于 Windows Forms 的文档和教程,深入了解其更多特性和使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值