3

我目前想知道如何在python中列出win32com中的常量,

例如使用 excelwin32com.client.Dispatch('Excel.Application')

有没有办法使用 win32com.client.Constants 显示所有常量?

或者有人知道我在哪里可以找到 win32com 的文档吗?因为我找到的所有链接都死了......

4

3 回答 3

1

要了解您可以使用哪些 Com 应用程序...请参阅http://timgolden.me.uk/pywin32-docs/html/com/win32com/HTML/QuickStartClientCom.html

基本上你无法确定。对不起。根据安装的软件,每台计算机都会有一个不同的列表,我链接的网页建议使用 pyWins ComBrowser,但我从未发现它有用。

我通常的做法是“我想在 Python 中与应用程序 X 交互......让谷歌“python com X”看看会发生什么”或“我想在 Python 中与应用程序 X 交互......让我们看看 AppX 的文档参考 COM'

毕竟,您将希望对该程序的 COM 接口有某种形式的文档,以便能够对程序执行任何有意义的操作(除了打开它)。

于 2013-08-28T15:59:21.480 回答
1

@CastleH 在他的评论中给出的答案为我指明了正确的方向:help()帮助了我很多,但你必须在模块级别使用它!

例如,

import win32print
help(win32print)

为您提供 win32print 中的所有常量。您可以对 win32com 中的每个模块执行相同的操作(有关模块的完整列表,请参见win32com 文档的模块部分)。

使用help(win32com)对我没有多大帮助,因为它主要是列出包

于 2018-01-30T17:44:33.547 回答
1

要列出可用的常量,您可以执行以下操作:

import win32com

for k, v in win32com.client.constants.__dicts__[0].items(): 
    print("{:<45}: {}".format(k, v))

#  __module__                                   : win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x9
#  xl3DBar                                      : -4099
#  xl3DEffects1                                 : 13
#  xl3DEffects2                                 : 14
#  xl3DSurface                                  : -4103
#  ...

pywin32即使在 2020 年(创建后 16 年以上),最好的资源是源代码1

原来这win32com.client.constantsConstants的一个实例:

class Constants:
  """A container for generated COM constants.
  """
  def __init__(self):
    self.__dicts__ = [] # A list of dictionaries
  def __getattr__(self, a):
    for d in self.__dicts__:
      if a in d:
        return d[a]
    raise AttributeError(a)

# And create an instance.
constants = Constants()

常量都存储在self.__dicts__其中是字典列表。该列表恰好只包含一个字典。

知道了这一点,您可以遍历字典(如上所述)以查看可用的常量。


1对于死链接,请尝试 Internet Archive 的Wayback Machine。有用于各种浏览器的插件,可以轻松或自动搜索页面的存档版本。

于 2020-02-07T15:14:11.347 回答