zoukankan      html  css  js  c++  java
  • C#:当把U盘放插入,然后程序自动将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.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;
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    base.WndProc(ref m);
    }

    作者:罗敏贵
    邮箱:minguiluo@163.com
    QQ群:34178394 建群 主要是寻找志同道合的人士一起学习和讨论自己的所学所思
    出处:http://luomingui.cnblogs.com/
    说明:专注于微软平台项目架构、熟悉设计模式、架构设计、敏捷个人和项目管理。现主要从事WinForm、ASP.NET、等方面的项目开发、架构、管理工作。文章为作者平时里的思考和练习,可能有不当之处,请博客园的园友们多提宝贵意见。
    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

  • 相关阅读:
    C 栈和堆的区别
    ubuntu 12.10 禁用触摸板
    完美解决 linux sublime 中文无法输入
    gdb 断点调试C程序
    归并排序
    算法效率表示
    sublime -text 删除已安装插件
    MSSQL数据库表索引碎片整理优化性能
    Rdlc报表出现空白页解决方法
    RDLC报表:每页显示N条记录
  • 原文地址:https://www.cnblogs.com/luomingui/p/1768037.html
Copyright © 2011-2022 走看看