如何使用C#中的OLE Automation与其他程序交互



我用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 Automation与其他程序交互?如果答案是肯定的,我该如何与我的程序交互?我的意思是喜欢调用他们的方法。因为我不能添加SlpScripting.tlb作为参考。上面写着

无法添加对"SLP脚本接口"的引用ActiveX类型库"SlpScripting.tlb"是从.NET程序集导出的,不能作为引用添加。添加对.NET程序集的引用,而不是

我在谷歌上搜索过这件事,但没有找到答案。


终于找到了一个解决方案我不必在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:WindowsSysWOW64regsvr32.exe)。

然后,如果你转到,你的COM DLL应该在Visual Studio中列出

添加参考===>COM

如"SlpScripting Type Library 1.0"或类似内容。

然后,添加一个"使用SLPxxxx"或类似的名称(Intellisense应显示真实名称)。

在此之后,您应该能够创建COM对象的新实例。

要获得更多帮助,请搜索"C#互操作",您会发现很多信息。

方法2

打开Visual Studio命令提示符,然后输入:

tlbimp SlpScripting.tlb 

将创建一个DLL,您可以将其添加为引用。

相关内容

最新更新