首页 新闻 会员 周边 捐助

在客户端调用第三方打印机驱动,是否需要ActiveX的支持?

0
悬赏园豆:20 [已解决问题] 解决于 2013-12-11 16:22

客户用的是一种特殊的微型打印机,在高速公路上收费打发票用的,给了DLL接口,之前的在VB和C++的C/S程序上都可以使用。
现在我需要在B/S的浏览器端实现这个打印功能,也想调用这个DLL里的接口。不知是否是一定要写ActiveX才能实现?

 

另外,这个打印机是并口的,插到台式机上不会在控制面板中显示。但是用C++写的程序,通过调用其接口,可以实现打印,说明打印机和接口都是可用的。

spuerdaddy的主页 spuerdaddy | 初学一级 | 园豆:168
提问于:2013-12-10 14:36
< >
分享
最佳答案
0

一定要写 ActiveX 。

收获园豆:20
Launcher | 高人七级 |园豆:45050 | 2013-12-10 15:06

谢谢,之前一直不是很确定。我正在尝试写ActiveX来调DLL。

刚才正好遇到一个问题:ActiveX写好了,在我机器上可以调用,但是拿到连着打印机的台式机上用IE8打开的时候,提示是否允许,我允许了,但是ActiveX控件仍然不显示啊。这是什么问题哦

spuerdaddy | 园豆:168 (初学一级) | 2013-12-10 16:06

@spuerdaddy: 不显示的问题比较多,比如 Height 或 Width 为 0,比如是无界面的 ActiveX。

你应该先保证是否加载了 ActiveX 控件,而不是是否“显示”。

IE8 有些设置,“安全”-〉“自定义级别”-〉“AcitveX 控件和插件”,都选择允许。

最好先写一个本地的 html 文件,把 ActiveX 放里面,使用 IE 从本地加载此页面,测试通过后,再找下如果在 Web 服务器上部署,以及如何实现安全接口。

Launcher | 园豆:45050 (高人七级) | 2013-12-10 16:49

@Launcher: 嗯。我用正式你说的本地的方式,在文件夹里建一个html,然后ActiveX(编译之后生成的dll)放在则个文件夹里,然后用浏览器打开。

结果是,在我本地执行完全正确。ActiveX的方法都能执行。但是当我把这个文件夹整体拷贝到别的机器上时,就不能执行了。

“IE8 有些设置,“安全”-〉“自定义级别”-〉“AcitveX 控件和插件”,都选择允许。”这次都允许了。

spuerdaddy | 园豆:168 (初学一级) | 2013-12-10 17:05

@spuerdaddy: ActiveX 要能使用的先觉条件是,你先得在系统中注册你的 ActiveX 控件,你拷贝到其它机器后要先注册。

Launcher | 园豆:45050 (高人七级) | 2013-12-10 17:12

@spuerdaddy: 

“C#开发的ActiveX控件类库不像OCX那样可以直接通过regsvr32.exe注册(实际上,微软提供了替工具regasm.exe,但由于这种方式要不能实现自动升级,所以本文就不介绍了),要使控件类库运行于浏览器端,可以采取两种方式,一种是将控件类库打包为MSI安装包,然后直接在浏览器端安装;另一种是将MSI再封装为一个CAB包,这个CAB包就是一个ActiveX控件了,可以将它随应用程序一并发布,浏览器端访问包含有该控件的页面时,就会自动提示安装了。”

原来C#开发的不能用regsvr32.exe注册啊……

spuerdaddy | 园豆:168 (初学一级) | 2013-12-11 10:46

@Launcher: 还想请教一个问题,我开发的ActiveX用的是Windows类库项目,生成的Dll,代码里面我引用第三方的接口(DllImprot(***)),这样当我用Windows安装项目制作安装包时,我原来放在Bin里面的实现第三方接口的dll是否被包含进了安装宝Setup.msi。或者没进去,需要在制作CAB包的时候把这个加进去?

spuerdaddy | 园豆:168 (初学一级) | 2013-12-11 13:27

@spuerdaddy: 安装一次就知道了,C# 的没制作过,C++ 的在制作 CAB 包时需要显式指定依赖的 DLL。鉴于你使用了 P/Invoke 方式,打包的时候,第三方的 DLL 需要手动添加进去。

Launcher | 园豆:45050 (高人七级) | 2013-12-11 13:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册