C# 监控U盘插入与拔出

  1. 方法一:
  2. using System; 
  3. using System.Collections.Generic; 
  4. using System.ComponentModel; 
  5. using System.Data; 
  6. using System.Drawing; 
  7. using System.Text; 
  8. using System.Windows.Forms; 
  9. using System.Runtime.InteropServices; 
  10.  
  11. namespace upan 
  12.     public partial class Form1 Form 
  13.     
  14.         public Form1() 
  15.         
  16.             InitializeComponent(); 
  17.         
  18.         public Message mm; 
  19.         protected override void WndProc(ref Message m) //监视Windows消息 
  20.         
  21.             const int WM_DEVICECHANGE 0x219; 
  22.             const int WM_DEVICEARRVIAL 0x8000;//如果m.Msg的值为0x8000那么表示有U盘插入 
  23.             const int WM_DEVICEMOVECOMPLETE 0x8004; 
  24.             switch (m.Msg) 
  25.             
  26.                 case WM_DEVICECHANGE: 
  27.                     
  28.                         ShowDeviceChanged("WM_DEVICECHANGE"); 
  29.                         if (m.WParam.ToInt32() == WM_DEVICEARRVIAL) 
  30.                             ShowDeviceChanged("WM_DEVICEARRVIAL"); 
  31.                         else if (m.WParam.ToInt32() == WM_DEVICEMOVECOMPLETE) 
  32.                             ShowDeviceChanged("WM_DEVICEMOVECOMPLETE"); 
  33.                     
  34.                     break; 
  35.             
  36.             base.WndProc(ref m); //将系统消息传递自父类的WndProc 
  37.  
  38.         
  39.         public void ShowDeviceChanged(string message) 
  40.         
  41.             switch (message) 
  42.             
  43.                 case "WM_DEVICECHANGE": 
  44.                     this.textBox_Message.Text += "Device Changed \r\n"; 
  45.                     break; 
  46.                 case "WM_DEVICEMOVECOMPLETE": 
  47.                     this.textBox_Message.Text += "Device Moved\r\n"; 
  48.                     break; 
  49.                 case "WM_DEVICEARRVIAL": 
  50.                     this.textBox_Message.Text += "Device Arrived\r\n"; 
  51.                     break; 
  52.             
  53.         
  54.  
  55.         private void Form1_Load(object sender, EventArgs e) 
  56.         
  57.             WndProc(ref mm); 
  58.         
  59.     

 

posted @ 2009-08-18 15:40  oraclejava  阅读(996)  评论(0)    收藏  举报