【发布时间】:2015-04-22 04:33:40
【问题描述】:
我用 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);
【问题讨论】:
-
他们在帮助页面中真的没有关于从 .NET 代码访问他们的系统的任何其他内容吗?因为该错误表明他们的东西也是用 .NET 编写的,并且系统不希望通过两组包装器来往返所有内容(翻译 .NET -> COM,然后翻译 COM -> .NET)
-
我已经阅读了帮助文档,但没有提到如何从 C# .NET 代码访问他们的系统。如果我用 Visual Basic 制作这个程序,与 SLP 系统交互会更容易吗?因为里面提到“ScaleLink Pro 支持 ActiveX 自动化(也称为 OLE 自动化)。这允许 ScaleLink Pro 操作由外部程序控制,包括用脚本语言编写的程序,如 Visual Basic 和 Java 脚本。”