首页 > 系统相关 >C#实现USB插拔检测 通过Windows消息来实现

C#实现USB插拔检测 通过Windows消息来实现

时间:2023-06-15 21:47:06浏览次数:51  
标签:插拔 case const USB C# public break int DBT

#region 检测USB插拔

        public const int WM_DEVICECHANGE = 0x219;
        public const int DBT_DEVICEARRIVAL = 0x8000;
        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;

        protected override void WndProc(ref Message m)
        {

            try
            {
                if (m.Msg == WM_DEVICECHANGE)
                {
                    switch (m.WParam.ToInt32())
                    {
                        case WM_DEVICECHANGE:
                            break;
                        case DBT_DEVICEARRIVAL:
                            MessageBox.Show("判断检测USB插入电脑"); 
                            DriveInfo[] s = DriveInfo.GetDrives();
                            foreach (DriveInfo drive in s)
                            {
                                if (drive.DriveType == DriveType.Removable)
                                {
                                    break;
                                }
                            }
                            break;
                        case DBT_CONFIGCHANGECANCELED:
                            break;
                        case DBT_CONFIGCHANGED:
                            break;
                        case DBT_CUSTOMEVENT:
                            break;
                        case DBT_DEVICEQUERYREMOVE:
                            break;
                        case DBT_DEVICEQUERYREMOVEFAILED:
                            break;
                        case DBT_DEVICEREMOVECOMPLETE:
                            MessageBox.Show(""判断检测USB拔出电脑");
                            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)
            {
                MessageBox.Show(ex.Message);
            }
            base.WndProc(ref m);
        }
        #endregion

 

标签:插拔,case,const,USB,C#,public,break,int,DBT
From: https://www.cnblogs.com/stevenchen2016/p/17484178.html

相关文章

  • 二进制安装Tomcat
    注意:安装tomcat前必须先部署JDK[root@centos8~]#wgethttp://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz[root@centos8~]#wgethttps://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.88/bin/apache-tomc......
  • Docker镜像制作
    commitbuild-t将现有容器通过dockercommit手动构建镜像基于容器手动制作镜像步骤dockercommit格式dockercommit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]#选项-a,--authorstringAuthor(e.g.,"JohnHannibalSmith<hannibal@ateam.com>")-c,--changelist......
  • opcenter camstar designer基础知识-- Tables
     “Queries”窗口分为左右两个窗格。左窗格包含一个用于显示以下查询类别的选择树:可以展开每个类别以显示该类别中的查询,也可以通过在左窗格中右键单击来访问快捷菜单。快捷菜单选项包括: • AddQuerydefinition添加查询定义• RenameQuerydefinition重命名......
  • C#对List的元素按属性排序
    C#对List元素排序有几种方法。方法一、使用LinqList<User>sortedList=list.OrderBy(o=>o.ID).ToList();如果按降序排序,可以使用OrderByDescending方法:List<User>sortedList=list.OrderByDescending(o=>o.ID).ToList();方法二、扩展IComparable接口示例:publiccl......
  • javaScript语言学习指南
    简介关于JavaScript的入门学习教程,网上通常会推荐以下书籍:《JavaScript权威指南》(其中涵盖语言核心部分和浏览器客户端编程,比较系统和全面,个人比较推荐,电子版下载(中文版),英文版)《JavaScript高级程序设计》(作为参考书与《JavaScript权威指南》一起参考阅读还不错,电子版下载)《......
  • CentOS7 防火墙操作
    一、开启特定端口命令二、常用命令 一、开启特定端口命令1.检查防火墙是否开启(需要开启防火墙)#查看防火墙状态命令:systemctlstatusfirewalld#启动防火墙命令:systemctlstartfirewalld#关闭防火墙命令:systemctlstopfirewalld  2.开放指定端口(开发端口后需......
  • ros melodic安装,rosdep init失败解决方法
    1.背景:前段时间手贱把之前安装好的ros环境给删了,这两天刚好需要用,遇到了点之前踩过的坑,主要是众所周知的rosdepinit失败,这里记录一下。2.系统:Ubuntu18.043.网络环境:有魔法3.需求:安装rosmelodic版本4.安装步骤:a.基本流程都可以按照官方的进行,贴上链接:http://wiki.ro......
  • nginx安装-CentOS7
    一、下载nginx版本二、配置2.1安装配置2.2配置nginx环境变量2.3 设置开机启动2.4CentOS7防火墙端口开放三、卸载nginx四.常用命令  一个项目,使用https协议,用nginx做负载。使用当前较新的windows版本nginx1.23.3.2SnapDragonfly,使用Jmeter压测,很不理想,http协议能......
  • tr069 节点模板定义c语言
    #include<stdio.h>/*Signed*/typedefsignedcharint8_t;typedefshortintint16_t;typedefintint32_t;/*Unsigned.*/typedefunsignedcharuint8_t;typedefunsignedshortintuint16_t;typedefunsignedint......
  • [ABC114D] 756 题解
    题目链接题意给定一个数\(n\),求\(n!\)的因数中,刚好有\(75\)个因数的数的个数。分析首先有这样一个性质,对于一个数\(a\),我们将其分解质因数,即\[a=\prod_{i=1}^{n}p_i^{k_i}\]那么,\(a\)的因数个数就是\[sum=\prod_{i=1}^{n}(k_i+1)\]简单证明一下,对于第......