Python win32com常量

时间:2013-08-26 02:45:14

标签: python com constants win32com

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

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

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

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

3 个答案:

答案 0 :(得分: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接口提供某种形式的文档,以便能够对程序做任何有意义的事情(除了打开它)。

答案 1 :(得分:0)

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

例如,

import win32print
help(win32print)

为你提供win32print中的所有常量。您可以对win32com中的每个模块执行相同的操作(有关模块的完整列表,请参阅win32com documentation, section modules)。

使用help(win32com)对我没什么帮助,因为它主要列出了包

答案 2 :(得分:0)

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

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的最佳资源是source code 1 ,尤其是在2020年(创建16年后)。

事实证明,win32com.client.constantsConstants class的一个实例:

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存档的Wayback Machine。有用于各种浏览器的插件,可轻松或自动搜索页面的存档版本。