私は 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 クライアント プログラムでうまく動作することも確認できます。誰でも助けることができますか?
ありがとう。