- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#.NET U盘插拔监控
【1】涉及的知识点
1) windows消息处理函数
?
1
protected override void WndProc(ref Message m)
捕获Message的系统硬件改变发出的系统消息
2) 硬件信息类
?
1
DriveInfo
【2】核心函数
消息常量:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/// summary
/// windows消息常量
/// /summary
class CWndProMsgConst
{
????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_DEVICETYPEHANGED = 0x0007;
????public const int DBT_QUERYCHANGSPECIFIC = 0x8005;
????public const int DBT_DEVNODES_CECONFIG = 0x0017;
????public const int DBT_USERDEFINED = 0xFFFF;
}???
扫描函数:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// summary
/// 扫描U口设备
/// /summary
private void ScanUSBDisk()
{
????_usbdiskList.Clear();
????DriveInfo[] drives = DriveInfo.GetDrives();
?
????foreach (DriveInfo drive in drives)
????{
????????if ((drive.DriveType == DriveType.Removable) !drive.Name.Substring(0, 1).Equals(A))
????????{
????????????try
????????????{
????????????????_usbdiskList.Add(drive.Name);
????????????}
????????????catch
????????????{
????????????????MessageBox.Show(当前盘不能正确识别,请重新尝试!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information);
????????????}
????????}
????}
}
消息处理函数:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public void FillData(Form form, Message m, ListBox listbox)
{
????_listbox = listbox;
????_form??? = form;
?
????try
????{
????????if (m.Msg == CWndProMsgConst.WM_DEVICECHANGE) // 系统硬件改变发出的系统消息
????????{
????????????switch (m.WParam.ToInt32
文档评论(0)