私はPythonでIDispatchインターフェイスのみを公開し、IDLファイルもタイプライブラリも持たないCOMサーバーを使用しようとしています。さまざまな方法とその使用方法に関するドキュメントがあります。
win32comパッケージを使用しようとすると失敗します。これは、タイプ情報が利用できない場合、属性アクセスがプロパティの取得または設定であり、メソッドの呼び出しではないと想定するためのwin32comフォールバックのように見えるためです。
つまり、私が次のことを行うとき:
import win32com.client
c = win32com.client.GetActiveObject(server_progid)
c.someServerMethod(arg1, arg2)
win32comは、arg1、arg2を完全に無視して、サーバー上のsomeServerMethodプロパティを取得しようとします。コードを掘り下げると、Pythonがself .__getattr__を呼び出しているためと思われます。これにはarg1、arg2がありません。
私はこれを解決する方法を探しています:
- 私が実際にメソッドを呼び出していることをwin32comに伝えるためのいくつかの構文;
- この動作を実際に実装する他のPythonCOMクライアント。
- 明らかな「ドキュメントを手動でタイプライブラリに変換する」以外のその他の提案。
ありがとう!