如何获得系统中有新的mp3或优盘插入的消息,并把这个消息删除
如何获得系统中有新的mp3或优盘插入的消息,并获得盘符, 
 并把这个消息删除,使系统不再自己跳出一个“打开”对话框
------解决方案--------------------驱动器发生改变会发送WM_DEVICECHANGE(537)消息
------解决方案--------------------转贴: 
 using System;  
 using System.Collections.Generic;  
 using System.ComponentModel;  
 using System.Data;  
 using System.Drawing;  
 using System.Text;  
 using System.Windows.Forms;  
 using System.IO;    
 namespace U盘更新  
 {  
     public partial class Form1 : Form  
     {  
         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;    
         public Form1()  
         {  
             InitializeComponent();  
         }    
         private void Form1_Load(object sender, EventArgs e)  
         {    
         }             
         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)  
                                 {  
                                     listBox1.Items.Add( "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盘卸载  
                             break;  
                         case DBT_DEVICEREMOVEPENDING:  
                             break;  
                         case DBT_DEVICETYPESPECIFIC:  
                             break;  
                         case DBT_DEVNODES_CHANGED:  
                             break;  
                         case DBT_QUERYCHANGECONFIG:  
                             break;  
                         case DBT_USERDEFINED:  
                             break;  
                         default:  
                             break;