我使用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程序集的引用
我在谷歌搜索过这个,但我找不到答案。
终于找到了解决方案 我不必在c#中添加引用,而不仅仅是使用:
System.Type objType = System.Type.GetTypeFromProgID("The name of progID that you want to call");
dynamic comObject = System.Activator.CreateInstance(objType);
然后只需调用该对象中存在的函数/方法,例如:
comObject.LoginToHost("localhost", 8085, username, pass);
答案 0 :(得分:3)
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
)。
如果你转到
,那么你的COM DLL应该在Visual Studio中列出添加引用==> COM
as" SlpScripting Type Library 1.0"或类似的。
然后,使用SLPxxxx"添加"或类似的(智能感知应显示真实姓名)。
在此之后,您应该能够创建COM对象的新实例。
如需其他帮助,请搜索" C#COM interop",您会发现很多信息。
方法2
打开Visual Studio命令提示符,然后输入:
tlbimp SlpScripting.tlb
将创建一个DLL,您可以将其添加为参考。