我创建了一个使用C#的应用程序,该应用程序可以从SQL Server读取商品数据并将其推送到名为“ SLP-V Ishida Retail Scales”的秤系统。它们具有“ SLP-V自动化接口”接口,该接口允许用户程序与其系统进行交互。这是SLP-V帮助页面中的注释:
自动化接口(也称为“ COM(公共对象模型)接口”)为用户程序提供了一种访问SLP-V功能的方法。最常见的应用程序是使用VB脚本来自动化SLP-V操作,例如导入主机文件。但是,可以在支持自动化(COM)的任何编程环境中使用自动化接口,这是将SLP-V功能集成到最终用户应用程序中的首选方法。
本主题为SLP-V自动化对象的方法和属性提供参考,并包括一些示例程序。
SLP-V自动化对象
SLP-V自动化对象的名称为“ Ishida.Slp.Scripting.CommonApi”,类型库文件为“ SlpScripting.tlb”。
我的问题是,C#语言是否允许我们使用OLE自动化与其他程序进行交互?如果答案是肯定的,我该如何与我的程序进行交互?
我的意思是喜欢调用他们的方法。因为我不能添加SlpScripting.tlb
作为参考。它说
不能添加对“ SLP脚本接口”的引用
ActiveX类型库'SlpScripting.tlb'是从.NET程序集导出的,不能添加为引用。添加对.NET程序集的引用
我已经在Google上搜索了此内容,但没有找到答案。
终于找到了解决方案
我不必在c#中添加引用,而不仅仅是使用:
System.Type objType = System.Type.GetTypeFromProgID("The name of progID that you want to call");
dynamic comObject = System.Activator.CreateInstance(objType);
示例ProgID =“ Ishida.Slp.Scripting.CommonApi”。
然后只需调用该对象中存在的函数/方法,例如:
comObject.LoginToHost("localhost", 8085, username, pass);
最佳答案
OLE自动化是现在称为COM的旧用词。是的,.NET可以非常轻松地访问COM(从.NET 1.0开始)。
您有以下选择:
方法1
首先在开发系统上“注册” COM库。查看SLP系统的文档,可能是在安装过程中已经完成的。如果没有,通常可以使用regsvr32 XXX.DLL手动注册COM DLL。请注意32/64位问题(如果要在64位Windows中注册32位COM DLL,请使用C:\Windows\SysWOW64\regsvr32.exe
)。
然后,如果您转到以下位置,则应该在Visual Studio中列出您的COM DLL:
添加参考==> COM
作为“ SlpScripting类型库1.0”或类似名称。
然后,添加“使用SLPxxxx”或类似名称(Intellisense应该显示真实名称)。
此后,您应该能够创建COM对象的新实例。
如需其他帮助,请搜索“ C#COM interop”,您将找到很多信息。
方法2
打开Visual Studio命令提示符,然后输入:
tlbimp SlpScripting.tlb
将创建一个DLL,您可以将其添加为参考。
关于c# - 如何在C#中使用OLE自动化与另一个程序进行交互?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29787825/