C# 判断是否插入U盾 我使用C#做的C/S,如何判断是否插入U盾呢,读取出保存在U盾中的值或写入内容到U盾中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过系统 DeviceChagne事件,可以监控USB设备的更改。但是,是不是U盾要依据驱动中的相关信息来判断。再者读写操作就不那么简单了。不然建行的网银不就虑设了。呵呵。 感觉好高深啊,但是U盾供应商提供的API 有样例代码的 http://www.codeproject.com/KB/system/DriveDetector.aspx http://topic.csdn.net/u/20100709/11/cc35b06d-56bc-414a-9dde-bbf6031bccc7.html可能不是楼主想要的,参考一下吧 LZ想干嘛,昨天刚申请了个U盾, 怕怕! 这个是网上复制的,忘记出处。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(DateTime.Now.ToString() + "--> 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盘卸载 listBox1.Items.Add(DateTime.Now.ToString() + "--> 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); } 有了U盾供应商提供的API 可能会相对好实现一些``` U盾应该是用COM驱动的,你查看一下安装U盾以后你的电脑上多了什么工行的COM程序没?然后直接引用那个COM,看看有什么接口,可能有你想要的。我没装U盾,查不了,呵呵 你的U盾总有与别的USB设备不一样的特征(比如内容),可以访问插入的USB设备,或遍历USB设备,来做判断。 一个问题~~~ 如何获取DevExpress中GridControl的任意值(无焦点的情况下) 求大神指导!!! 目录中最优化文件数量 C#中系统与系统的连接问题 善于安装包制作,让用户输入序列号 dataGridView_SelectionChanged事件中如何返回我选择了dataGridView表中第几行?? 框架集问题 怎么让程序抛了异常就不执行下面代码。 急等 C#的严重Bug,关于字符串字针 开发DotNet设置IIS站点的问题 winform exe文件带参数 关于RDLC的问题,请高手帮忙了
通过系统 DeviceChagne事件,可以监控USB设备的更改。
但是,是不是U盾要依据驱动中的相关信息来判断。
再者读写操作就不那么简单了。不然建行的网银不就虑设了。呵呵。
有样例代码的
可能不是楼主想要的,参考一下吧
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(DateTime.Now.ToString() + "--> 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盘卸载
listBox1.Items.Add(DateTime.Now.ToString() + "--> 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);
}
我没装U盾,查不了,呵呵