fnthex32.dll :尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

16年时候项目中也要用的斑马打印机打印中文汉字的要求,想借鉴这个控件(Fnthex32.dll)来完成,无奈都失败啦,后来是用C# 写成类给vb6.0调用把文本写在txtbox中,再生产图片,然后系列化解决的这个问题。

最近用c# 重写这个斑马打印程序,就又想起这个控件,于是就决定重新研究一下,网上的基本都是9个参数(报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。)。无奈怎么都不成功,最后想如果不定义序列化的文本名会是什么样的结果呢?于是乎就把参数三给干啦,结果“奇迹”出现啦,都给网上的源代码给害啦,以此标记,也供需要的网友参考,少走弯路。

代码如下:

  [DllImport("fnthex32.dll")]

        public static extern int GETFONTHEX(
                              string BarcodeText,
                              string FontName,
                            
                              int Orient,
                              int Height,
                              int Width,
                              int IsBold,
                              int IsItalic,

                              StringBuilder ReturnBarcodeCMD);

 string sBarCodeCMD = "";            //条码打印命令
            StringBuilder sb1 = new StringBuilder(50240);
            
            int i1;
             i1 = GETFONTHEX("定向天线,DXX-1885-2025/25555-2635-90/65-14.5i/15.8i-", "Arial", 0, 30, 20, 0, 0,sb1 );
            sb1 = sb1.Replace("OUTSTR01","ok01");
sBarCodeCMD=sb1.ToString()+"^XA^MD30^LH20,20^FO20,20^XGok01,1,1^FS^XZ"; Console.WriteLine(sBarCodeCMD );
            Open();
            PrintZPL(sBarCodeCMD);
            Close();

默认的序列化文本名是OUTSTR01,所以在转换完后自行替换定义的文本名。

绝对有用。

第一次发文,可以点个赞么?

大笑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值