2016-12-16 8 views
1

VBベースのコードブロックをC#で書き直す必要があり、COMオブジェクトのインスタンスを作成して新しいターミナルセッションを作成する関数を作成しています画面を読み込んで画面の内容を返します。私はC#で正しいアプローチをとっていないような気がしますが、フィードバックをいただければ幸いです。現状ではその
VB相手は、上記したように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 
    } 

、これは、ホスト内の任意の特性を認識していないされません。私は使用可能なすべてのCOMオブジェクト
参照をVS Projectのパッケージマネージャー内で作成しました。どうすればいいですか
別のやり方はありますか?

+0

ライブラリを直接参照しない理由はありますか? –

+0

ベンダーが推奨している以外の本当の理由はありません。 – LifeOf0sAnd1s

+1

C#コードは実際には*ライブラリを直接参照するため、 'using'ディレクティブが機能します。実際にそれを使用していないのは、まあ、賢明ではありません。しかし、 '動的ホスト'と 'Type.GetTypeFromProgID(" BlueZone.LIPI ")'が必要です。 IntelliSenseはまだメンバーを表示しません。 –

答えて

1

変更:

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

...へ:予想通り

using BZLIPILib; 
using BZWHLLLib; 
... 

LIPI Host = new LIPI(); 

...その後、IntelliSenseが動作します。

更新:実際に必要なコードがあると表示されます。

using BZLIPILib; 
using BZWHLLLib; 
... 

LipiObj Host = new LipiObj(); 

...以下OPさんのコメントのとおり。

+0

あなたはほとんど正しいです!実際にはLipiObj Host =新しいLipiObj(); – LifeOf0sAnd1s

+0

@ LifeOf0sAnd1sああ!なぜ 'CreateObject(" BlueZone.LIPI ")'がうまくいったのか? – MickyD

+0

わかりません。私は多くの問題に遭遇しています。これらはすべてVB6で古いAuto Hot Keyオブジェクトに組み込まれているためです – LifeOf0sAnd1s

関連する問題