如何使用Python脚本编写Visual Studio 2008?

7

我想编写Python脚本来驱动Visual Studio 2008和Visual C++ 2008。到目前为止,我找到的所有示例都使用win32com.client.Dispatch。这对于Excel 2007和Word 2007运行良好,但是在Visual Studio 2008中失败:

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

有什么想法吗?Visual Studio 2008使用不同的字符串来标识自己吗?上述方法已经过时了吗?
5个回答

3

ryan_s已经给出了正确的答案。你可能需要重新考虑使用win32com。

我更喜欢使用comtypes模块而不是win32com。它更适合ctypes和Python的一般用法。

在使用vs 2008时,使用任何一种方法都可以。以下是一个示例,打印Visual Studio中所有命令的名称和键盘快捷方式。

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()

3

根据你想要做什么,AutoIt 可能满足你的需求。实际上,我相信它可以做任何你需要它做的事情。

摘自我的 另一篇文章,介绍如何在 Python 中使用 AutoIt:

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函数(请注意,该链接指向AutoIt函数参考,AutoIt的com版本-AutoItX具有该列表的子集...文档包含在下载中)以此方式。我不知道您想要做什么,因此无法指向适当的函数,但这应该可以帮助您入门。


3

我不知道这是否能帮助你解决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版本来进行测试。


2

0

截至2013年,更好的选择可能是通过IronPython脚本化Visual Studio,因为它具有更好的CLR/COM和其他微软工具的集成:


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接