C#开发ActiveX控件

最近做了一个Web项目,需要通过页面按钮打印条形码,我们首先使用了国内公司开发的一款ActiveX打印插件(jatoolsPrinter)。使用了free版,一般性的打印都支持,比如打印a4,a8,a16大小的内容,可以指定打印区域,分页打印等。用GDI+画了条形码及需要输出的内容(位图)。打印出来的效果相当不理想,位置便宜太大,无论通过jatoolsPrinter调试都不行,最终启用改控件,自己制作ActiveX控件。

本人只会C#,所以选用C#开发。

  1. 创建一个类库项目,右键属性勾选图上的选项
  2. 在AssemblyInfo.cs增加[assembly: AllowPartiallyTrustedCallers()]和[assembly: SecurityRules(SecurityRuleSet.Level1)]
  3. ActiveX类库的内容大致包括两部分,IObjectSafety接口和实现该接口的控件类。为了让ActiveX控件获得客户端的信任,控件类还需要实现一个名为“IObjectSafety”的接口,不能修改GUID。
        [ComImport, GuidAttribute("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
        [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
        public interface IObjectSafety
        {
            [PreserveSig]
            int GetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] ref int pdwSupportedOptions, [MarshalAs(UnmanagedType.U4)] ref int pdwEnabledOptions);
    
            [PreserveSig()]
            int SetInterfaceSafetyOptions(ref Guid riid, [MarshalAs(UnmanagedType.U4)] int dwOptionSetMask, [MarshalAs(UnmanagedType.U4)] int dwEnabledOptions);
        }
  4. 创建需要调用的类,GUID可以自己生成,<object>标签用的guid就是这个。这里控件功能已经完成了。
    <span style="font-size:10px;"></span><pre name="code" class="csharp"> [Guid("cdba6508-d939-4448-bf57-4caf9b52e138")]
        public class MyPrinter : ActiveXControl
        {
            public string GetName(string name)
            {
                return name + name;
            }
        }

     
  5. 使用打包工具生成安装包,这里我用的是InstallShield Limited Editon Project。可以再vs2012中下载安装。安装的时候需要连接vpn通过网站注册信息下载安装包。不用vpn的话获取不到数据,无法选择国家等必填项,估计也不能提交吧。
  6. 没有特别需要申明的话就一直下一步就行了,比如公司名称地址之类的,需要关注的是第三步。

    点击Add Project Outputs,这里我选择了主输出和内容,一般情况下编译之后你只有一个dll的话只需要主输出就行了,如果还有资源配件、安装配置文件的话需要添加内容文件,我这边有一个打印机配置的txt文件,所以勾选了内容文件。当然你如果知道你需要的dll和其他文件的话也可以点击右边的Add Files按钮或则Add Folders按钮。


    发布的时候记得选择SingleImage,这样才会将dll、exe打进安装包里面
  7. 把发布的exe文件放到web目录下面引用。
    <object id="panduoPrinter" style="display: none;" classid="clsid:cdba6508-d939-4448-bf57-4caf9b52e138" codebase="/ActiveX/panduoprint.exe">
        </object>

    我这里没有做cab包,不能静默安装,需要手动下载安装。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值