2008-10-21 52 views
7

我想编写驱动Visual Studio 2008和Visual C++ 2008的Python脚本。到目前为止,我发现的所有示例都使用win32com.client.Dispatch。这适用于Excel 2007和Word 2007,但适用于Visual Studio 2008:如何从Python编写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使用不同的字符串来标识自己吗?上述方法是否过时?

回答

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年虽然测试。

+0

它的工作原理与Visual Studio 2008,谢谢! – jwfearn 2008-10-22 01:10:41

3

根据你想要做什么,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具有该列表的子集...文档包含在下载中)。我不知道你想做什么,所以我不能指出你适当的功能,但这应该让你开始。

3

ryan_s的回答是正确的。你可能会反思使用win32com。

我更喜欢win32com的comtypes模块。它一般适合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() 
0

由于2013年的,更好的选择,可以通过IronPython是脚本Visual Studio事业更好CLR/COM和其他MS的东西整合:


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