• 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 中国大陆许可协议进行许可。

  • 相关阅读:
    网络基础
    socket编程初识
    socket之黏包
    socketserver和socket的补充(验证客户端合法性)
    操作系统介绍
    进程初识和multiprocessing模块之Process
    进程Process之join、daemon(守护)、terminate(关闭)
    进程间通信(队列、管道)、消费者模型和进程池(apply,apply_async,map)
    数字证书私钥sign及验证
    JAVA获取密钥公钥的keytool的使用
  • 原文地址:https://www.cnblogs.com/luomingui/p/1768037.html
Copyright © 2020-2023  润新知