【问题标题】:Python win32com constantsPython win32com 常量
【发布时间】:2013-08-26 02:45:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python com constants win32com


    【解决方案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 接口提供某种形式的文档,以便能够对程序执行任何有意义的操作(除了打开它)。

    【讨论】:

    • 是的,我尽力找到了,因为我想连接的使用 com 的应用程序是我公司的内部应用程序,所以在这种情况下,Google 不是我的朋友.. 最后,我找到了一些实习生文件并询问了该工具开发的负责人。所以没关系!但是我还是真的不知道哪里可以找到win32com的库文档,好像不存在..
    • 这可能对 win32com 文档有所帮助.. docs.activestate.com/activepython/2.5/pywin32/html/com/win32com/… 或者只是尝试 import win32comhelp(win32com) 等我发现在 Windows 中我已经安装在我的 python 文件夹“Python for Windows Documentation”(访问通过开始菜单或 C:\PythonXX\Lib\site-packages\PyWin32.chm)在其中搜索 win32com 并为您提供一些东西。还有一些关于 Python Com 编程的书籍。
    【解决方案2】:

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

    例如,

    import win32print
    help(win32print)
    

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

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

    【讨论】:

      【解决方案3】:

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

      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,即使是在 2020 年(创建后 16 年以上),也是source code1

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

      【讨论】:

        猜你喜欢
        • 2018-06-23
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 2012-03-15
        • 2023-03-24
        • 1970-01-01
        • 2013-07-27
        相关资源
        最近更新 更多