C#检测是否有u盘插入的方法

本文实例讲述了C#检测是否有u盘插入的方法。分享给大家供大家参考。具体如下:

该C#代码可监控是否有u盘插入,同时可以监控其它驱动器的变化

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices
;
namespace WindowsApplication16
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }
  [StructLayout(LayoutKind.Sequential)]
  public struct DEV_BROADCAST_VOLUME
  {
   public int dbcv_size;
   public int dbcv_devicetype;
   public int dbcv_reserved;
   public int dbcv_unitmask;
  }
  protected override void WndProc(ref Message m)
  {
   // 发生设备变动
   const int WM_DEVICECHANGE = 0x0219;
   // 系统检测到一个新设备
   const int DBT_DEVICEARRIVAL = 0x8000;
   // 系统完成移除一个设备
   const int DBT_DEVICEREMOVECOMPLETE = 0x8001;
   // 逻辑卷标
   const int DBT_DEVTYP_VOLUME = 0x00000002;
   switch (m.Msg)
   {
    case WM_DEVICECHANGE:
     switch (m.WParam.ToInt32())
     {
      case DBT_DEVICEARRIVAL:
       int devType = Marshal.ReadInt32(m.LParam, 4);
       if (devType == DBT_DEVTYP_VOLUME)
       {
        DEV_BROADCAST_VOLUME vol;
        vol = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(
         m.LParam, typeof(DEV_BROADCAST_VOLUME));
        MessageBox.Show(vol.dbcv_unitmask.ToString("x"));
       }
       break;
      case DBT_DEVICEREMOVECOMPLETE:
       MessageBox.Show("Removal");
       break;
     }
     break;
   }
   base.WndProc(ref m);
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。