2008-10-21 10 views
7

Me gustaría escribir scripts de Python que dirijan Visual Studio 2008 y Visual C++ 2008. Todos los ejemplos que he encontrado hasta ahora usan win32com.client.Dispatch. Esto funciona bien para Excel 2007 y Word 2007 pero falla para Visual Studio 2008:Cómo crear un script de Visual Studio 2008 desde Python?

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

¿Alguna idea? ¿Visual Studio 2008 usa una cadena diferente para identificarse? ¿El método anterior está desactualizado?

Respuesta

3

No sé si esto le ayudará con 2008, pero con Visual Studio 2005 y win32com que soy capaz de hacer esto:

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

Por desgracia no tengo 2008 para probar con pesar .

+0

Funciona con Visual Studio 2008, gracias! – jwfearn

+0

No hay problema. Me alegro de poder ayudar. –

3

Dependiendo de lo que intente hacer exactamente, AutoIt puede satisfacer sus necesidades. De hecho, estoy seguro de que hará todo lo que necesite.

tomado de mi other post acerca de cómo utilizar AutoIt con 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 

Por supuesto, puede utilizar cualquiera de los AutoItX functions (tenga en cuenta que esta relación va a la referencia de funciones AutoIt, la versión com de AutoIt - AutoItX tiene un subconjunto de esa lista ... la documentación está incluida en la descarga) de esta manera. No sé qué es lo que quieres hacer, así que no puedo señalarte las funciones apropiadas, pero esto debería ayudarte a empezar.

3

ryan_s tiene la respuesta correcta. Puede replantearse el uso de win32com.

Prefiero el módulo comtypes para win32com. Se adapta mejor con ctypes y python en general.

Usar cualquiera de los enfoques con vs 2008 funcionará. Aquí hay un ejemplo que imprime los nombres y los atajos de teclado para todos los comandos en 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

A partir del año 2013, una mejor opción puede ser a través de la escritura Visual StudioIronPython causa mejor CLR/COM y otra integración cosas de Microsoft:


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 
Cuestiones relacionadas