一定要写 ActiveX 。
谢谢,之前一直不是很确定。我正在尝试写ActiveX来调DLL。
刚才正好遇到一个问题:ActiveX写好了,在我机器上可以调用,但是拿到连着打印机的台式机上用IE8打开的时候,提示是否允许,我允许了,但是ActiveX控件仍然不显示啊。这是什么问题哦
@spuerdaddy: 不显示的问题比较多,比如 Height 或 Width 为 0,比如是无界面的 ActiveX。
你应该先保证是否加载了 ActiveX 控件,而不是是否“显示”。
IE8 有些设置,“安全”-〉“自定义级别”-〉“AcitveX 控件和插件”,都选择允许。
最好先写一个本地的 html 文件,把 ActiveX 放里面,使用 IE 从本地加载此页面,测试通过后,再找下如果在 Web 服务器上部署,以及如何实现安全接口。
@Launcher: 嗯。我用正式你说的本地的方式,在文件夹里建一个html,然后ActiveX(编译之后生成的dll)放在则个文件夹里,然后用浏览器打开。
结果是,在我本地执行完全正确。ActiveX的方法都能执行。但是当我把这个文件夹整体拷贝到别的机器上时,就不能执行了。
“IE8 有些设置,“安全”-〉“自定义级别”-〉“AcitveX 控件和插件”,都选择允许。”这次都允许了。
@spuerdaddy: ActiveX 要能使用的先觉条件是,你先得在系统中注册你的 ActiveX 控件,你拷贝到其它机器后要先注册。
@spuerdaddy:
“C#开发的ActiveX控件类库不像OCX那样可以直接通过regsvr32.exe注册(实际上,微软提供了替工具regasm.exe,但由于这种方式要不能实现自动升级,所以本文就不介绍了),要使控件类库运行于浏览器端,可以采取两种方式,一种是将控件类库打包为MSI安装包,然后直接在浏览器端安装;另一种是将MSI再封装为一个CAB包,这个CAB包就是一个ActiveX控件了,可以将它随应用程序一并发布,浏览器端访问包含有该控件的页面时,就会自动提示安装了。”
原来C#开发的不能用regsvr32.exe注册啊……
@Launcher: 还想请教一个问题,我开发的ActiveX用的是Windows类库项目,生成的Dll,代码里面我引用第三方的接口(DllImprot(***)),这样当我用Windows安装项目制作安装包时,我原来放在Bin里面的实现第三方接口的dll是否被包含进了安装宝Setup.msi。或者没进去,需要在制作CAB包的时候把这个加进去?
@spuerdaddy: 安装一次就知道了,C# 的没制作过,C++ 的在制作 CAB 包时需要显式指定依赖的 DLL。鉴于你使用了 P/Invoke 方式,打包的时候,第三方的 DLL 需要手动添加进去。