win32com.client.Dispatch Class 标签
win32com.client.Dispatch Class Label
我正在尝试使用 python 连接到 COM 对象。
更具体地说,我正在使用 ASCOM 标准驱动程序连接到 MaxDome II,但不知道如何引用该驱动程序。
在这个 link 中,作者使用 "Celestron.Telescope" 作为 win32com.client.Dispatch 实例化的参数。
我的问题是如何找到这个字符串。我知道这与安装在计算机上的已安装驱动程序有关,但我不知道如何找到具体的字符串。有没有办法使用 win32com.client 来列出 COM 对象?
顺便说一下,在 Windows 7 pro,64 位上运行。
谢谢
我认为直接从 python 获取 COM 对象列表是不可能的,但是您可以 运行 以下代码(实际上 运行 它来自 python) 在 Powershell 中:
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。
我机器上的一些输出:
希望对您有所帮助!
这个 "Celestron.Telescope" 字符串称为 ProgID(您可以很容易地 google 这个术语)。
它们位于整个计算机的 HKEY_LOCAL_MACHINE\SOFTWARE\Classes
注册表项下,当前 运行 用户位于 HKEY_CLASSES_ROOT
中。
当 COM 创建组件的实例时,它将使用当前用户的注册表视图。大多数键都在 HKLM 中,但在 HKCR 中可以有一些本地覆盖。
我正在尝试使用 python 连接到 COM 对象。
更具体地说,我正在使用 ASCOM 标准驱动程序连接到 MaxDome II,但不知道如何引用该驱动程序。
在这个 link 中,作者使用 "Celestron.Telescope" 作为 win32com.client.Dispatch 实例化的参数。
我的问题是如何找到这个字符串。我知道这与安装在计算机上的已安装驱动程序有关,但我不知道如何找到具体的字符串。有没有办法使用 win32com.client 来列出 COM 对象?
顺便说一下,在 Windows 7 pro,64 位上运行。
谢谢
我认为直接从 python 获取 COM 对象列表是不可能的,但是您可以 运行 以下代码(实际上 运行 它来自 python) 在 Powershell 中:
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。
我机器上的一些输出:
希望对您有所帮助!
这个 "Celestron.Telescope" 字符串称为 ProgID(您可以很容易地 google 这个术语)。
它们位于整个计算机的 HKEY_LOCAL_MACHINE\SOFTWARE\Classes
注册表项下,当前 运行 用户位于 HKEY_CLASSES_ROOT
中。
当 COM 创建组件的实例时,它将使用当前用户的注册表视图。大多数键都在 HKLM 中,但在 HKCR 中可以有一些本地覆盖。