我创建了一个使用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/

10-10 07:45