如何在C#中使用OLE自动化与其他程序交互?

时间:2015-04-22 04:33:41

标签: c# ole

我使用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);
  • 示例ProgID =" Ishida.Slp.Scripting.CommonApi"。

然后只需调用该对象中存在的函数/方法,例如:

comObject.LoginToHost("localhost", 8085, username, pass);

1 个答案:

答案 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,您可以将其添加为参考。