只要你程序运行着,一旦有U盘插入,操作系统(我指的是Windows OS)会向每个进程广播WM_DEVICECHANGE消息的,只要响应该消息就可以了
- // 优盘插入
-
-
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;
-
-
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)
-
{
-
Upath = drive.Name.ToString();
-
string folderpath = Upath + @"\taxbase";
-
if (!Directory.Exists(folderpath))
-
{
-
Directory.CreateDirectory(folderpath);
-
}
-
string path = Upath + @"\taxbase\" + LoginUserInfo.LoginUser.Com_code + @".db";
-
if (File.Exists(path))
-
{
-
MessageBox.Show("检测到U盘插入,可以更新数据!
- }
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);
}
阅读(703) | 评论(0) | 转发(1) |