我使用C#做的C/S,如何判断是否插入U盾呢,读取出保存在U盾中的值或写入内容到U盾中

解决方案 »

  1.   


    通过系统 DeviceChagne事件,可以监控USB设备的更改。
    但是,是不是U盾要依据驱动中的相关信息来判断。
    再者读写操作就不那么简单了。不然建行的网银不就虑设了。呵呵。
      

  2.   

    感觉好高深啊,但是U盾供应商提供的API 
    有样例代码的 
      

  3.   

    http://www.codeproject.com/KB/system/DriveDetector.aspx
      

  4.   

    http://topic.csdn.net/u/20100709/11/cc35b06d-56bc-414a-9dde-bbf6031bccc7.html
    可能不是楼主想要的,参考一下吧
      

  5.   

    LZ想干嘛,昨天刚申请了个U盾, 怕怕!
      

  6.   

    这个是网上复制的,忘记出处。
    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);
            }
      

  7.   

    有了U盾供应商提供的API  可能会相对好实现一些```
      

  8.   

    U盾应该是用COM驱动的,你查看一下安装U盾以后你的电脑上多了什么工行的COM程序没?然后直接引用那个COM,看看有什么接口,可能有你想要的。
    我没装U盾,查不了,呵呵
      

  9.   

    你的U盾总有与别的USB设备不一样的特征(比如内容),可以访问插入的USB设备,或遍历USB设备,来做判断。