导航

[转]用C#写个程序能识别有U盘插入

Posted on 2009-06-10 12:23  pegger  阅读(425)  评论(0编辑  收藏  举报
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 USBDeviceSet
{
    
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();
        }

        
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)
                                
{
                                    richTextBox1.AppendText(
"U盘已插入,盘符为:" + drive.Name.ToString() + "\r\n");
                                    
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;
                    }

                }

            }

            
catch (Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

            
base.WndProc(ref m);
        }

    }

河南恒友科贸有限公司 
电话 :0371-53733453    传真:0371-65388972
地址:郑州市郑花路8号 E-mail:hengyousoft@QQ.com