在项目开发中,需要实现在线扫描照片的功能,网上有很多这方面的资料,大多都是收费控件,破解版的控件我是没有找到,而又不想花钱去买控件,苦逼的程序猿费尽周折,想尽办法,最终还是被我解决!为了纪念这段苦逼的时光,特写此博客,希望IT大佬们不要保守,多写博客,多分享自己的技术。
设计思路:
cs版扫描代码,网上有很多,可以找到,而BS的也很多,但是大多都是ScanOnWeb控件的用法,而这个控件是一款收费的控件,而且价格不菲,一般个人用户支付比较困难,有一款控件Kodak,也有类似的功能,cs的比较好实现,而bs的我也没有实现,网上有资料,但是按照介绍配置,运行不了,希望有试验成功的人士分享成果。我采用的是一款叫做scan.ocx的控件,网上应该能找到,下载后先注册,注册方法:regsvr32,即可注册,该控件需要在兼容模式下运行,这一点很重要,然后还需要设置IE,允许未经签名的控件运行,具体设计代码如下:(该代码为根据网上资料改编)
注意设置:codebase="Scan.inf"属性这是实现客户端自动下载安装activeX控件的关键技术,另外客户端IE设置必须允许下载并安装未签名和已签名的activeX控件才可以,另外,在你的INF文件的[Scan.ocx]节中,配置file,指定Scan.cab的位置如:http://192.168.3.249:3721/Scan.cab,具体Scan.inf文件的内容如下:
[Add.Code]
Scan.ocx=Scan.ocx
[Scan.ocx]
file=http://192.168.3.249:3721/Scan.cab(Scan.cab在服务器的位置)非常关键,根据你发布的IP修改
clsid={8DDD6D72-668C-44C1-91E1-C2D13B47C609}(注册键值)
RegisterServer=yes(注册到服务器)
FileVersion=1,0,0,0(版本号)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="scanner.aspx.cs" Inherits="sydweb.UI.Public_page.scanner" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>图片扫描</title>
<meta name="renderer" content="Trident">
<script type="text/javascript">
function pic() {
document.getElementById("<%= HiddenField1.ClientID %>").value = document.getElementById("scan").PicData;
if (document.getElementById("scan").PicData == "")
{ alert("请扫描!"); return false; }
}
</script>
<script language="javascript" event="OnEnableSave" for="scan">
document.getElementById("<%= Button1.ClientID %>").disabled = false;;
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table style="width:800px;height:600px;border:5px;border-color:black;">
<tr style="width:800px;height:600px;">
<td>
<object id="scan" classid="clsid:8DDD6D72-668C-44C1-91E1-C2D13B47C609" codebase="Scan.inf" width="100%" height="100%" hspace="0" vspace="0"></object> //这里的codebase的属性设置就是inf在项目中的位置路径
</td>
</tr>
<tr style="width:800px;height:30px;">
<td align="right">
<asp:Button ID="Button1" runat="server" Text="保存" Width="80px" OnClientClick="return pic()" OnClick="Button1_Click" />
</td>
</tr>
</table>
<asp:HiddenField ID="HiddenField1" runat="server" />
</div>
<script type="text/javascript">
if (document.getElementById("<%= HiddenField1.ClientID %>").value == "") {
document.getElementById("<%= Button1.ClientID %>").disabled = true;
}
</script>
</form>
</body>
</html>
二、IE浏览器的设置:
ActiveX控件做为IE浏览器专门一种插件程序,在我们使用IE过程中是会经常遇到的。比如当我们使用网银或支付宝等安全要求比较高的网站,都会提示我们需要安装ActiveX控件。
只有安装ActiveX控件以后我们才能正常登陆这些网站,以及使用这些网站的服务。一般我们安装的ActiveX控件都是带签名的,这种ActiveX控件就表明属于安全的。但是有时候当开发者开发出ActiveX控件时需要进行调试,但是这个时候还没有数字签名时,我们如何才能让IE浏览器安装调用未签名的ActiveX控件呢?这个问题就是本文让跟大家分享的内容。
我们可以通过下面的方法来进行解决:
1、首先打开Internet选项,在“高级”菜单中勾选“允许运行或安装软件,即使签名无效”菜单,然后确认保存。
如何在IE浏览器中调用未签名ActiveX控件的设置方法?
2、然后在Internet选项中继续切换到“安全”选项卡,单击下面的“自定义级别”,在弹出的菜单中勾选如下选项:
3、同样在“安全”选项卡中,选中“受信任的站点”在单击“站点”按钮,然后添加你要访问的网站的地址:
然后重新启动浏览器即可。
4、如果想删除控件,可以在 C:\Windows\Downloaded Program Files 目录里找到控件,但是删除之前记得先关闭浏览器。
5、如果你是一个普通用户,运行未签名ActiveX的控件会有风险,所以尽量使用已知的安全的控件。