c#调用WIN32API,可以运行,但是没反应?

其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法:

我主要讨论从dll中导出函数,基本步骤如下:

3.如果需要,为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET Framework 的默认封送处理。

指示如何在托管代码和非托管代码之间封送数据。可将该属性应用于参数、字段或返回值。

该属性为可选属性,因为每个数据类型都有默认的封送处理行为。

三:进阶,如何处理含有复杂的参数和返回值类型的API的调用(To Be Continue…)

}

前面试了C++通过调用WIN32API来实现打印,但是发现这种打印方式要自己把图片画上去,而且还要自己调整位置才能把标签准确的打印到标签上,遇到二维码什么的还要自己画一个。所以这次通过C#调用CODESOFT的库来完成打印。

这里说一下为什么不用C++,其实是可以用的,但是CODESOFT的DLL库是用C#写的,用C++调用的时候总是报这样的那样的错误,实在比较麻烦,所以干脆采用C#来实现打印功能。(此处给C#掌声)

首先,安装CODESOFT软件,这里选择企业版,目前只有企业版可以使用这种方式打印调用,其他版本并不支持,我这里选择的版本是CODESOFT7。

如果是默认安装的话,安装完毕之后可以在C:\Program Files (x86)\Tki\7\Common文件夹下发现Lppx2.tlb这个文件,这个就是我们需要引用的文件,我们在C#上添加引用这个文件,然后右键LabelManager2属性,嵌入互操作类型改为FALSE,不然的话可能会调用失败。调用CODESOFT打印的代码如下:

            //读取模板,如果模板参入参数不对就退出 }
            

这个是通过传参进行的,通过;来对参数切割,主函数调用方法如下:

这个1.lab就是模板文件,这里还有要注意的地方!!

网上很多教程说创建变量的时候是添加任意,但是我在测试的时候发现选择添加任意类型的变量并不能调用已创建的变量,如果程序在这部分有问题的话可以选择填充器类型的变量,结果输出的都是一样的,祝各位苦逼程序员好运。

}

我要回帖

更多关于 vc6为什么无法执行程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信