代码之家  ›  专栏  ›  技术社区  ›  jwfearn

如何从Python编写VisualStudio2008脚本?

  •  7
  • jwfearn  · 技术社区  · 17 年前

    我想编写驱动VisualStudio 2008和Visual C++ 2008的Python脚本。到目前为止,我发现的所有例子都很有用 win32com.client.Dispatch

    import win32com.client
    app1 = win32com.client.Dispatch( 'Excel.Application' ) # ok
    app2 = win32com.client.Dispatch( 'Word.Application' )  # ok
    app3 = win32com.client.Dispatch( 'MSDev.Application' ) # error
    

    有什么想法吗?VisualStudio2008是否使用不同的字符串来标识自身?上述方法过时了吗?

    5 回复  |  直到 17 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    取决于你到底想做什么, AutoIt

    从我的 other post 关于如何将AutoIt与Python一起使用:

    import win32com.client
    oAutoItX = win32com.client.Dispatch( "AutoItX3.Control" )
    
    oAutoItX.Opt("WinTitleMatchMode", 2) #Match text anywhere in a window title
    
    width = oAutoItX.WinGetClientSizeWidth("Firefox")
    height = oAutoItX.WinGetClientSizeHeight("Firefox")
    
    print width, height
    

    当然,您可以使用任何 AutoItX functions (请注意,该链接指向AutoIt函数参考,AutoIt的com版本-AutoItX有该列表的一个子集…文档包含在下载中)以这种方式。我不知道你想做什么,所以我不能给你指出合适的函数,但这应该让你开始。

        2
  •  3
  •   ryan_s    17 年前

    我不知道这是否有助于您处理2008,但通过Visual Studio 2005和win32com,我可以做到这一点:

    >>> import win32com.client
    >>> b = win32com.client.Dispatch('VisualStudio.DTE')
    >>> b
    <COMObject VisualStudio.DTE>
    >>> b.name
    u'Microsoft Visual Studio'
    >>> b.Version
    u'8.0'
    

    不幸的是,我没有2008年的测试。

        3
  •  3
  •   minty    17 年前

    与Win32 COM相比,我更喜欢comtypes模块。一般来说,它更适合ctypes和python。

    在VS2008中使用这两种方法都可以。下面是一个示例,用于打印VisualStudio中所有命令的名称和键盘快捷键。

    import comtypes.client as client
    
    vs = client.CreateObject('VisualStudio.DTE')
    
    commands = [command for command in vs.Commands if bool(command.Name) or bool(command.Bindings)]
    commands.sort(key=lambda cmd : cmd.Name)
    
    f= open('bindings.csv','w')
    
    for command in commands:
        f.write(command.Name+"," +";".join(command.Bindings)+ "\n")
    
    f.close()
    
        4
  •  2
  •   gimel    17 年前

    你可以试试 他自己的版本,, IronPython 它有一个 VS IronPythonStudio .

    作为一个 Visual Studio Tools for Office .

        5
  •  0
  •   Dzmitry Lahoda Adam    12 年前

    截至2013年,更好的选择是编写脚本 Visual Studio 通过 IronPython 使更好 CLR COM 以及其他MS stuff集成:

    
    import clr
    import System
    
    t = System.Type.GetTypeFromProgID("AutoItX3.Control")
    oAutoItX = System.Activator.CreateInstance(t)
    
    oAutoItX.Opt("WinTitleMatchMode", 2)
    
    width = oAutoItX.WinGetClientSizeWidth("IronPythonApplication1 - Microsoft Visual Studio (Administrator)")
    height = oAutoItX.WinGetClientSizeHeight("IronPythonApplication1 - Microsoft Visual Studio (Administrator)")
    
    print width, height