2017-12-01 17 views
0

私はPythonを使用してCOMオブジェクトに接続しようとしています。win32com.client.Dispatchクラスラベル

具体的には、ASCOM標準ドライバを使用してMaxDome IIに接続していますが、このドライバの参照方法はわかりません。

このlinkでは、著者はwin32com.client.Dispatchインスタンシエーションのパラメータとして "Celestron.Telescope"を使用しています。

私の質問は、この文字列を見つける方法です。私はそれがコンピュータにインストールされているインストールされたドライバに関連していることを理解していますが、特定の文字列を見つける方法はありません。 Win32com.clientを使用してCOMオブジェクトをリストする方法はありますか?

ところで、Windows 7 pro、64ビットで動作します。

おかげ

答えて

1

私はPowerShellで、しかし、あなたは、次のコードを実行します(実際のpythonの中からそれを実行する)ことができ、Pythonから直接COMオブジェクトの一覧を取得することが可能であるとは思わない:

Get-ChildItem HKLM:\Software\Classes -ErrorAction SilentlyContinue | Where-Object { 
    $_.PSChildName -match '^\w+\.\w+$' -and (Test-Path -Path "$($_.PSPath)\CLSID") 
} | Select-Object -ExpandProperty PSChildName 

これは、システム上のCOMオブジェクトの有効なすべての名前のリストをアルファベット順にソートして出力し、構文は通常MainProgram.SubFunctionです。

私のマシン上の出力の一部:

Snippet of command output in Powershell

私はこれが役に立てば幸い!

1

この「Celestron.Telescope」の文字列は、ProgIDと呼ばれています(この用語はかなり簡単にGoogleで検索できます)。

これらは、マシン全体のレジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Classesと現在の実行ユーザーのHKEY_CLASSES_ROOTにあります。

COMはコンポーネントのインスタンスを作成するとき、現在のユーザーのレジストリビューを使用します。ほとんどのキーはHKLMにありますが、HKCRにはいくつかのローカルオーバーライドがあります。

関連する問題