1

私は python スクリプトを実行して、com アプリケーションとして登録された ac# dll とやり取りし、出力構造体パラメーターの処理に問題があります。COM レコードを作成し、これを COM 関数呼び出しに正常に渡しましたが、データは変更されません。

私のC#関数は次のように宣言されています

void GetData(ref MyData data);

MyData は構造体であり、tlh ファイルのエントリは次のように生成されます。

  virtual HRESULT __stdcall GetData (
    /*[in,out]*/ struct MyData * data ) = 0;

私が宣言するPythonスクリプトで

self.myData = win32com.client.Record("MyData", self.myComServerObj)

そして、関数を呼び出します

self.myComServerObj.GetData(self.myData)

ただし、self.myData 内のデータ項目は、関数呼び出しの後も変更されません。

サーバー側で関数呼び出しをデバッグして、データが変化していることを確認できます。また、クライアント側でテスト値を割り当てて、これらがサーバーによって受信されていることを確認することもできます。つまり、struct パラメータは [In] パラメータとしては正常に機能しますが、[out] パラメータとしては機能しません。

関数が 'C' COM クライアント プログラムでうまく動作することも確認できます。誰でも助けることができますか?

ありがとう。

4

0 に答える 0