C#检测U盘是否插入

    public partial class Form1 : Form
    {
        #region u盘属性
        public const int WM_DEVICECHANGE = 0x219;//U盘插入后,OS的底层会自动检测到,然后向应用程序发送“硬件设备状态改变“的消息
        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; //自定义的事件发生。 的Windows NT 4.0和Windows 95:此值不支持。
        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;  //此消息的含义是用户定义的
        #endregion

        public Form1()
        {
            InitializeComponent();
        }

        #region 检测u盘
        protected override void WndProc(ref Message m)
        {
            try
            {
                if (m.Msg == WM_DEVICECHANGE)
                {
                    switch (m.WParam.ToInt32())
                    {
                        case WM_DEVICECHANGE:
                            break;
                        case DBT_DEVICEARRIVAL://U盘插入
                            MessageBox.Show("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盘卸载
                            MessageBox.Show("U盘拔出!");
                            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

    }

原文地址:https://www.cnblogs.com/RambleLife/p/9189909.html

时间: 2024-07-29 17:14:15

C#检测U盘是否插入的相关文章

WINDOWS检测U盘插入,拔出

检测U盘的插入或拔出状态,然后根据状态做出相关操作. 检测U盘是否被插入是通过监听WM_DEVICECHANGE消息来实现的. 判断-U盘拔出和插入-获取它盘符 2010-05-04 10:59 加入消息 ON_WM_DEVICECHANGE(OnDeviceChange) 加入 afx_msg void OnDeviceChange(UINT nEventType, DWORD dwData); -------------------------------------------------

vbs脚本-检测U盘插入拨出并通过邮件报警

自己复制粘贴和修改的,很多做网管的朋友应该会用得上,里面锁定操作的小程序是自己用VB写的,很不完善,就不拿出来献丑了~~~ 报警邮件内容包括电脑的IP.计算机名.域用户名 '############################################################### '              检测U盘接入和拨出行为并触发邮件报警                         '   同时可以锁定计算机操作,产生卡机现像,拨出U盘或15分钟后解除 '####

在linux(Ubuntu)下检测USB设备的插入和移除

此代码用于检测USB设备的插入,拔出,在Ubuntu下测试通过 #!/usr/bin/env python import glib #apt-get install python-gudev import gudev import pynotify import sys def callback(client, action, device, user_data):     device_vendor = device.get_property("ID_VENDOR_ENC")    

debian7 请把标有“Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 DVD Binary-1 20130615-23:06”的盘片插入驱动器“/media/cdrom/”再按回车键

有时候,在通过apt-get install 安装软件的时候,会出现: 更换介质:请把标有“Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 DVD Binary-1 20130615-23:06”的盘片插入驱动器“/media/cdrom/”再按回车键 类似的提示,如果不放入CD,那么安装是不能继续下去的. 为了解决此问题,我们可以这像下面这么做: root权限修改/etc/apt/sources.list文件,注释掉deb cdrom:开头的行

U盘是否插入+导入导出文件

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using EnergyCollector.Frame; 10 using System.IO;

C# 检测pc光驱里插入了光盘的代码

将开发过程经常用的一些代码段做个备份,如下代码段是关于C# 检测pc光驱里插入了光盘的代码,应该能对码农们也有好处.using System;using System.Management; namespace CDROMManagement{class WMIEvent{static void Main(string[] args){WMIEvent we = new WMIEvent();ManagementEventWatcher w = null;WqlEventQuery q;Mana

检测U盘插入、拨出状态

头文件 #include <Dbt.h> 关键代码: 1 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 2 { 3 4 switch (message) 5 { 6 case WM_DEVICECHANGE: 7 if (DBT_DEVICEARRIVAL==wParam ) 8 MessageBox(NULL,TEXT("U盘插入"),TEXT("&

windows下的Java程序用于检测U盘

package com.baikeyang.utils; import java.io.File;import java.util.LinkedHashMap;import java.util.Map; // U盘检测public class CheckU {          // 存放磁盘状态           private static Map<String, Boolean> map = new LinkedHashMap<String, Boolean>();    

MFC U盘检测

WM_DEVICECHANGE消息 查阅MSDN得知: The framework calls this member function to notify an application or device driver of a change to the hardware configuration of a device or the computer. 即:框架调用这个函数来通知应用程序或者设备驱动程序设备硬件配置或者电脑的配置被改变了. 所以,检测U盘的插入和拔出也就相当于侦测处理WM