多语言展示
当前在线:934今日阅读:176今日分享:34

c#识别U盘插入拔出及盘符

c#识别U盘插入拔出及盘符的小实验,原理是获取电脑的消息机制, 代码虽然比较多,其实代码很简单,就只用到了一个“switch”“case”的判断和“using System.IO;”。
工具/原料

Microsoft Visual Studio 2008

方法/步骤
1

打开“Microsoft Visual Studio 2008“。如图:

2

找到”文件---新建---项目“打开创建项目窗体,如图:

3

在创建项目窗体的项目类别中的'WINDOWS'下找到'Windows窗体应用程序',并且为自己的项目命名。如图:

4

创建完项目后,在FROM1窗体,添加一个”label1“控件,换成”TEXTBOX“等其它控件也可。见图:

5

在空白位置,鼠标右键,点击”查看代码“进入代码编辑界面。

6

首先加入USB消息提醒的常量,这里加入的是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;

7

引用”using System.IO;“,”using System.IO;“一般只要涉及文件操作都需要引用它。

8

创建消息判断方法及”label1“操作,代码:        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盘插入                               DriveInfo[] s = DriveInfo.GetDrives();                            foreach (DriveInfo drive in s)                            {                                if (drive.DriveType == DriveType.Removable)                                {                                    label1.Text='U盘已插入,盘符为:' + drive.Name.ToString();                                    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:   //U盘卸载                             label1.Text='';                            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);        }

9

启动调试.

10

显示程序界面,

11

插入U盘,测试效果.

注意事项

c#代码编写必须为英文输入法之下输入,否则调试会报错。

推荐信息