2017-11-29 11 views
-1

最近dll呼び出しでいくつかの作業を行っています.dllはcomオブジェクトと通信することでした。ヘルプファイルでは、例はDelphiで書かれていました。まず、それはイベントを上げ、MethodAという名前のメソッドを呼び出して、OnOperatorInfoMsgというイベントだった、イベントはDelphiで定義されたものを返し以下だった:Delphiの構造体をC#に変換して構造体からデータを取得する方法

OnOperatorInfoMsg = procedure(Sender: TObject; wOperatorCount: Integer; OperatorsInfo: Integer) of object; 

とdnspyを通じて、私はイベントがC#のように翻訳された見つけますこれは:

public class OnOperatorInfoMsgEvent 
{ 
    public int wOperatorCount; 
    public int operatorsInfo; 

    public OnOperatorInfoMsgEvent(int wOperatorCount, int operatorsInfo); 
} 

および私は、C#からOperatorsInfoでwAgentID、wSkillGroupID、AgentStatusを取得できますか

OPINFO 
OPINFO = record 
    wAgentID: WORD; 
    wSkillGroupID: WORD; 
    wWorkGroupID: WORD; 
    AgentStatus: AGENT_STATUS; 
end; 

:DelphiでOperatorsInfoは次のように定義されて?

+1

は答えて、ここで十分な詳細は、リモートではありません。質問を大幅に編集する必要があります。しかし、私は、Delphiのタイプ 'TCccCtrlXOnOperatorInfoMsg'はC#での簡単な相互運用性の定義がないと言うことができます。もちろん、C#ホスト実行ファイルとDelphi DLLとの間でピンボケ相互運用を行っていると仮定します。しかし、それは推測です。 –

+1

少なくとも2つの質問があります。 'TCccCtrlXOnOperatorInfoMsg'の翻訳は完全に間違っています。これはクラスではなく、メソッド参照です(@DavidHeffernanの注釈として、C#が使用できるものではありません)。最初の例では 'OperatorsInfo:Integer'がありますが、最後にはそれがレコードでありintではないことが示唆されています。 –

+0

質問を更新しましたか?もう助けてください。 –

答えて

関連する問題