0

Audio Precision ATS-2 を制御するために Python で ActiveX オートメーションを使用しようとしています。Python 2.7 で pywin32 32 ビット Windows XP を使用しています。

オーディオ Precision ソフトウェアをインストールしました。次に、リストにAudio Precisionを見つけてラッパーを作成するmakepyユーティリティを使用しました。ディスパッチ関数を呼び出そうとするまで、すべてがうまくいっています。

オンラインで見つけたガイドから、

win32com.client.Dispatch("Excel.Application")

「Excel.Application」と書かれた部分には何を入れればいいですか?

どうすればこれを見つけることができますか?

OLE/COM オブジェクト ビューアを使用すると、タイプ ライブラリの下に Audio Precision エントリが表示されますが、その中の情報がどのように役立つかわかりません。

私は自分でいくつかのことを試みましたが、ほとんど結果が得られませんでした。CLSID私が得た最良の結果は、makepy が作成したラッパー オブジェクトで見つけたディスパッチ関数に入ったときでした。

win32com.client.Dispatch("{80EC6E76-D94F-48EB-8F4C-05BDD7850BF1}")

次のエラーが発生しました:

    Traceback (most recent call last):
  File "C:\Python27\Lib\site-packages\win32com\gen_py\APtest.py", line 5, in <module>
    xlApp = win32com.client.Dispatch("{80EC6E76-D94F-48EB-8F4C-05BDD7850BF1}")
  File "C:\Python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 108, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 85, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221164, 'Class not registered', None, None)

私は持っている:

  • レジストリを調べたところ、ID は実際にはどこにも登録されていません。Audio Precision エントリはほとんどありませんが、これを修正できるものはないようです。
  • Audio Precision ソフトウェアの再インストールを試みましたが、役に立ちませんでした。
  • Audio Precision コントロール (ATS 1.60) ソフトウェアに dll オブジェクトを登録しようとしましたregsrv32が、すべてエラーが発生し、登録されませんでした (これは、登録する必要がある適切なものではないと思われます)。

どうすればこれを修正できますか?

4

3 に答える 3

3

これを解決する可能な方法:

  • 呼び出す Audio Precision ATS-2 dll を特定します。例 "C:\path\my.dll"
  • レジストリに移動して、「C:\path\my.dll」を探します。周りにいくつかのものが見つかりますが、本当に必要なのは CLSID...\InprocServer32 フォルダー内のエントリ、または同様のものです
  • 「AudioPrecison.ATS2」のような ProgID エントリもあります。
  • 今すぐPythonで試してくださいwin32com.client.Dispatch("AudioPrecison.ATS2")
于 2012-09-20T15:26:03.203 に答える
1

同じ問題がありました。私が収集できるものからCoClass、プログラムによって作成された(dllのラッパーであると私は信じています)の名前を取得する場所がわかりませんでしたmakepy(おそらく私は間違っています)。@NotAUserの回答を読んだ後、それを見つけましたが、makepyプログラムによって作成されたファイルを調べたときに、最後のクラスの直前に (複数作成されている場合)、次のことがわかりました。

from win32com.client import CoClassBaseClass
# This CoClass is known by the name 'ZKFPEngXControl.ZKFPEngX'
class ZKFPEngX(CoClassBaseClass): # A CoClass

そのため、同じファイルに、使用する必要のある名前がありました。

于 2014-01-22T20:06:55.617 に答える