2016-12-16 52 views
1

我有一个基于VB的代码块,我需要在C#中重写,我正在写一个函数,它创建一个COM对象的实例并创建一个新的终端会话,去读出屏幕并返回屏幕的内容。现在虽然我觉得我在C#中没有采取正确的方法,并且希望得到一些反馈。在C#中正确设置COM对象的一个​​实例#

VB代码

set bzlipi = CreateObject("BlueZone.LIPI") 
bzlipi.Username = "myuserid" 
bzlipi.Password = "mypassword" 
bzlipi.HostAddress = "101.122.0.138" 
bzlipi.ShowTransferStatusWindow = False 
bzlipi.LocalPromptBeforeOverwrite = False 
result = bzlipi.ReceiveFile("local.txt", "MYLIB/F4101") 
MsgBox bzlipi.ErrorMessage 

C#

using BZLIPILib; 
    using BZWHLLLib; 

    public void Connector() { 
    object Host = Activator.CreateInstance(Type.GetType("BZLIPILib.LIPI")); 
    //Set Host properties 
    } 

既然这样,这不是不能识别主机内的任何属性作为其
VB对应上述一样。我已经在我的VS项目的包管理器中提供了所有可用的COM对象
引用。我应该怎样做
做不同?

+0

是否有没有直接引用库的原因? –

+0

没有什么真正的原因,除了供应商推荐的做法。 – LifeOf0sAnd1s

+1

实际上*的C#代码直接引用库,这就是为什么'using'指令可以工作的原因。实际上没有使用它是不明智的。但需要'动态主机'和'Type.GetTypeFromProgID(“BlueZone.LIPI”)'。智能感知仍然不会显示成员。 –

回答

1

变化:

using BZLIPILib; 
using BZWHLLLib; 
... 
object Host = Activator.CreateInstance(Type.GetType("BZLIPILib.LIPI")); 

...到:

using BZLIPILib; 
using BZWHLLLib; 
... 

LIPI Host = new LIPI(); 

...然后按预期的智能感知会工作。

更新:看来,实际所需的代码是:

using BZLIPILib; 
using BZWHLLLib; 
... 

LipiObj Host = new LipiObj(); 

...按如下OP的评论。

+0

你大多是正确的!它实际上是LipiObj Host = new LipiObj(); – LifeOf0sAnd1s

+0

@ LifeOf0sAnd1s哦!不知道为什么'CreateObject(“BlueZone.LIPI”)'工作? – MickyD

+0

我不确定。我遇到了很多问题,因为所有这些都嵌入到使用VB6的旧Auto Hot Key对象中 – LifeOf0sAnd1s

相关问题