C#实现检测U盘的插拔
来源:互联网 发布:html转xml python 编辑:程序博客网 时间:2024/05/17 01:36
C# Winform中WndProc 函数作用:
主要用在拦截并处理系统消息和自定义消息
比如:
windows程序会产生很多消息,比如你单击鼠标,移动窗口都会产生消息。这个函数就是默认的消息处理函数。你可以重载这个函数来制定自己的消息处理流程.
在Winform程序中,可以重写WndProc函数,来捕捉所有发生的窗口消息。
这样,我们就可以"篡改"传入的消息,而人为的让窗口改变行为。
我们用C#实现检测U盘插拔的功能,是用重写C# WndProc函数来做到的。
简单测试代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO; //添加IO命名空间namespace CheckUdisk{ 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: DriveInfo[] s = DriveInfo.GetDrives(); foreach (DriveInfo drive in s) { if (drive.DriveType == DriveType.Removable) { this.richTextBox1.AppendText("U盘已插入,盘符是" + drive.Name.ToString() + "\r\n"); break; } } break; case DBT_CONFIGCHANGECANCELED: MessageBox.Show("2"); break; case DBT_CONFIGCHANGED: MessageBox.Show("3"); break; case DBT_CUSTOMEVENT: MessageBox.Show("4"); break; case DBT_DEVICEQUERYREMOVE: MessageBox.Show("5"); break; case DBT_DEVICEQUERYREMOVEFAILED: MessageBox.Show("6"); break; case DBT_DEVICEREMOVECOMPLETE: this.richTextBox1.AppendText("U盘已卸载"); break; case DBT_DEVICEREMOVEPENDING: MessageBox.Show("7"); break; case DBT_DEVICETYPESPECIFIC: MessageBox.Show("8"); break; case DBT_DEVNODES_CHANGED: MessageBox.Show("9"); break; case DBT_QUERYCHANGECONFIG: MessageBox.Show("10"); break; case DBT_USERDEFINED: MessageBox.Show("11"); break; default: break; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } base.WndProc(ref m); } }}
0 0
- C#实现检测U盘的插拔
- VB:如何检测到U盘的插拔(源代码)
- MFC实现设备的插拔检测
- MFC实现设备的插拔检测
- 检测手机耳机插拔
- 通过信号实现在应用层检测TF卡的拔插
- Android 4.x耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- Android4.2耳机插拔检测实现方法
- Android 4.x耳机插拔检测实现方法
- VC++实现USB 硬盘等硬件插拔检测
- Android4.2耳机插拔检测实现方法
- 【TopDesk】3.1.1. 利用IMMNotificationClient实现耳机插拔检测
- 动态检测设备拔插
- Qt Usb插拔检测
- Android4.×耳机插拔检测
- MFC检测串口插拔
- android USB插拔检测
- linux内核pid哈希表
- ConcurrentHashMap
- 算法训练 幂方分解
- 百度地图的使用(3)
- LeetCode 100. Same Tree
- C#实现检测U盘的插拔
- POJ 2488 A Knight's Journey 搜索
- Java 打印1到最大的n位数
- SAP HANA使用XS和HTTP创建proxy
- CentOS、Ubuntu、Debian三个linux比较异同
- Codeforces Round #304 (Div. 2)
- Android自定义圆角矩形
- HTML5学习(一) 初始网页
- 学习笔记———《自动文档摘要评价方法---Edmundson和ROUGE》