win32com.client.Dispatch类标签

时间:2017-12-01 23:13:31

标签: python windows com win32com ascom

我正在尝试使用python连接到COM对象。

更具体地说,我使用ASCOM标准驱动程序连接到MaxDome II,并且不知道如何引用此驱动程序。

在此link中,作者使用" Celestron.Telescope"作为win32com.client.Dispatch实例化的参数。

我的问题是如何找到这个字符串。我知道它与安装在计算机上的驱动程序有关,但我不知道如何找到特定的字符串。有没有办法使用win32com.client列出COM对象?

顺便说一下,在Windows 7专业版,64位上运行。

由于

2 个答案:

答案 0 :(得分:2)

我认为不可能直接从python获取COM对象列表,但是你可以在Powershell中运行以下代码(实际上是从python中运行它):

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 :(得分:1)

这是" Celestron.Telescope"字符串被称为ProgID(你可以很容易地在这个词上谷歌)。

它们位于整个计算机的HKEY_LOCAL_MACHINE\SOFTWARE\Classes注册表项下,位于当前正在运行的用户的HKEY_CLASSES_ROOT下。

当COM创建组件的实例时,它将使用当前用户对注册表的视图。大部分钥匙都在HKLM,但在HKCR可以有一些本地覆盖。