2008-10-21 82 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