最近做一个指纹采集和比对的功能,因为公司整个项目是WEB类型的,所以指纹采集的模块要嵌套在网页中,那只有用ActiveX了,以下是一些操作及效果,做个笔记!

新建用户控件,编写CS代码,如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.IO;
using System.Reflection;namespace FingerTool
{[Guid("5136CBA1-59B0-4A96-B2DC-64062A81F377")]public partial class FingerToolUC : UserControl,IObjectSafety{public FingerToolUC(){InitializeComponent();}FrmMain fm = null;public void ShowSettingForm(){if (fm == null) {fm = new FrmMain();}fm.ShowDialog();}#region 调用JS接口[ComImport, Guid("00000118-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]public interface IOleClientSite{void SaveObject();void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk);void GetContainer(out IOleContainer ppContainer);void ShowObject();void OnShowWindow(bool fShow);void RequestNewObjectLayout();}[ComImport, Guid("0000011B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]public interface IOleContainer{void EnumObjects([In, MarshalAs(UnmanagedType.U4)] int grfFlags,[Out, MarshalAs(UnmanagedType.LPArray)] object[] ppenum);void ParseDisplayName([In, MarshalAs(UnmanagedType.Interface)] object pbc,[In, MarshalAs(UnmanagedType.BStr)] string pszDisplayName,[Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten,[Out, MarshalAs(UnmanagedType.LPArray)] object[] ppmkOut);void LockContainer([In, MarshalAs(UnmanagedType.I4)] int fLock);}#endregion#region IE 安全接口private const string _IID_IDispatch = "{00020400-0000-0000-C000-000000000046}";private const string _IID_IDispatchEx = "{a6ef9860-c720-11d0-9337-00a0c90dcaa9}";private const string _IID_IPersistStorage = "{0000010A-0000-0000-C000-000000000046}";private const string _IID_IPersistStream = "{00000109-0000-0000-C000-000000000046}";private const string _IID_IPersistPropertyBag = "{37D84F60-42CB-11CE-8135-00AA004BB851}";private const int INTERFACESAFE_FOR_UNTRUSTED_CALLER = 0x00000001;private const int INTERFACESAFE_FOR_UNTRUSTED_DATA = 0x00000002;private const int S_OK = 0;private const int E_FAIL = unchecked((int)0x80004005);private const int E_NOINTERFACE = unchecked((int)0x80004002);private bool _fSafeForScripting = true;private bool _fSafeForInitializing = true;public int GetInterfaceSafetyOptions(ref Guid riid, ref int pdwSupportedOptions, ref int pdwEnabledOptions){int Rslt = E_FAIL;string strGUID = riid.ToString("B");pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;switch (strGUID){case _IID_IDispatch:case _IID_IDispatchEx:Rslt = S_OK;pdwEnabledOptions = 0;if (_fSafeForScripting == true)pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;break;case _IID_IPersistStorage:case _IID_IPersistStream:case _IID_IPersistPropertyBag:Rslt = S_OK;pdwEnabledOptions = 0;if (_fSafeForInitializing == true)pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;break;default:Rslt = E_NOINTERFACE;break;}return Rslt;}

指纹采集关键代码:

private void axZKFPEngX1_OnImageReceived(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnImageReceivedEvent e){if (!e.aImageValid) return;if (axZKFPEngX1.IsDisposed) return;try{if (pictureBox1.Image != null){pictureBox1.Image.Dispose();//释放文件资源pictureBox1.Image = null;//清除图片
                }if (!System.IO.Directory.Exists(mvPath)){System.IO.Directory.CreateDirectory(mvPath);}string FilePath = mvPath + "\\" + Guid.NewGuid().ToString() + ".bmp";axZKFPEngX1.SaveBitmap(FilePath);//保存新文件pictureBox1.Image = System.Drawing.Bitmap.FromFile(FilePath);//显示图片
                pictureBox1.Refresh();if (this.txtValue.Text.Trim() != ""){SetMsg("", "Control");}}catch (Exception ex){MessageBox.Show(ex.Message);}}private void axZKFPEngX1_OnFeatureInfo(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnFeatureInfoEvent e){string sTemp = "";if (axZKFPEngX1.IsRegister){sTemp = "登记状态:还需要按压:" + (axZKFPEngX1.EnrollIndex - 1).ToString() + "次指纹 ";}sTemp = sTemp + "指纹质量";if (e.aQuality != 0){if (e.aQuality == 1){sTemp = sTemp + "特征点不够";}else{sTemp = sTemp + "其它原因导致不能取到指纹特征";}}else{sTemp = sTemp + "合格";}this.lblMessage.Text = sTemp;}

指纹校验部分,最后保存起来的指纹是转换之后的BASE64字符串

string Value_Old="";//已经登记的指纹
string Value_Curr="";//当前的指纹bool IsOK = false;bool bRegChange = false;if (axZKFPEngX1.VerFingerFromStr(ref Value_Old, Value_Curr, false, ref bRegChange)){IsOK = true;}if (axZKFPEngX1.VerFingerFromStr(ref Value_Old2, Value_Curr, false, ref bRegChange)){IsOK = true;}if (IsOK){MessageBox.Show("OK");}else{MessageBox.Show("NG");}

设置项目的COM属性

在页面中注册此插件

采集指纹的次数可以自定义,默认为采集三次之后保存,设备是中控的采集器。

转载于:https://www.cnblogs.com/allen0118/p/4207008.html

C#开发ActiveX控件及指纹采集相关推荐

  1. [转]C#开发ActiveX控件,.NET开发OCX控件案例

    引自:百度   http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...

  2. 使用C#开发ActiveX控件[Obsolete]

    附件下载(源代码+安装文件+教程) 0. 前言 ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中.使用ActiveX插件,可以轻松方 ...

  3. [转]使用C#开发ActiveX控件

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

  4. 使用C#开发ActiveX控件

    0. 前言 ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中.使用ActiveX插件,可以轻松方便的在 Web页中插入多媒体效果.交 ...

  5. (转)使用C#开发ActiveX控件

    本文转载自:http://www.cnblogs.com/yilin/archive/2009/09/15/1567332.html 附件下载(源代码+安装文件+教程) 0. 前言 ActiveX控件 ...

  6. 27.4.1 开发ActiveX控件

    本控件只是个示例,功能比较简单,共有三个方法,本别是获取当前个人存储区证书列表.获取指定证书.使用指定证书签名.在Windows下使用Visual C++ 6.0开发ActiveX控件的步骤如下所示. ...

  7. 使用C#开发ActiveX控件(新)

    前言 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是 ...

  8. 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题

    程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...

  9. [转]使用C#开发ActiveX控件全攻略

    先说说ActiveX的基本概念. 根据微软权威的软件开发指南MSDN(Microsoft Developer Network)的定义,ActiveX插件以前也叫做OLE控件或OCX控件,它是一些软件组 ...

最新文章

  1. 理解Kalman滤波的使用
  2. Javascript使用Ajax跟踪历史
  3. 统一代码段与非一致代码段
  4. ef entity转json引起的Self referencing loop
  5. 按要求罗列所有字符串字符序列
  6. PAT_B_1006_Java(15分)
  7. 安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器
  8. Apriori关联规则算法实现及其原理(基础篇)
  9. 零基础学python好学吗-Python0基础好学吗?
  10. python实现将子文件夹下的图片复制到新的文件夹并重命名
  11. dede rss.php,[经验]dede全站RSS订阅静态输出的办法
  12. PSP联机插件pro online
  13. JSP--矩形(圆)面积计算器
  14. Linux 程序性能分析与优化
  15. 转载(吃货告诉你,PAAS、IAAS和SAAS之间的区别)
  16. 推荐一款HTML在线编辑器
  17. SpringCloud_JZZ_MBY
  18. tensorflow中将标注文件写到train.txt, test.txt,trainval.txt中
  19. matlab画梯形并平移,matlab 批量处理梯形变形
  20. Redis之sql缓存

热门文章

  1. access查询设计sol视图_选择查询-在access中如何建立一个选择查询只查询一个信?在access 爱问知识人...
  2. Linux常用命令详解(两万字超长文)
  3. w7怎么写html代码,笔记本win7系统使用记事本编辑和运行html代码的方法
  4. 解决pytorch官网下载慢ubuntu16.04+anaconda3(python3.6)+pytorch0.4.1+cuda9.0+cudnn7.1安装指南
  5. pc端调用电脑摄像头及麦克风完成录像或录音并实现回放和上传服务器
  6. 构建栅格地图matlab代码
  7. 手机android系统问题怎么解决方案,4解决Android系统崩溃问题的解决方案
  8. 港科夜闻|全国政协副主席梁振英先生率香港商企及机构代表一行到莅临香港科大(广州)访问交流...
  9. 无法连接 树莓派 网线连接电脑_树莓派网线直连笔记本电脑
  10. 3蛋白wb_干货分享:三个蛋白组学数据库的应用