Как написать скрипт Visual Studio 2008 из Python? - PullRequest
8 голосов
/ 21 октября 2008

Я бы хотел написать скрипты 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 голосов
/ 11 июня 2009

ryan_s имеет правильный ответ. Вы можете переосмыслить, используя win32com.

Я предпочитаю модуль comtypes для win32com. Он лучше подходит для ctypes и python в целом.

Использование любого из подходов в сравнении с 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 голосов
/ 21 октября 2008

В зависимости от того, что именно вы пытаетесь сделать, AutoIt может удовлетворить ваши потребности. На самом деле, я уверен, что он сделает все, что вам нужно.

Взято из моего другого поста о том, как использовать 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 (обратите внимание, что эта ссылка ведет к справочнику по функциям AutoIt, com-версия AutoIt - AutoItX имеет подмножество этого списка ... документация включены в загрузку) таким образом. Я не знаю, что вы хотите сделать, поэтому я не могу указать вам на соответствующие функции, но это должно помочь вам начать.

3 голосов
/ 22 октября 2008

Не знаю, поможет ли это вам в 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 голосов
/ 21 октября 2008

Вы можете попробовать собственную версию .Net , IronPython . Он имеет VS аддон, IronPythonStudio .

Будучи языком .Net , вы можете получить доступ ко всем доступным сборкам, включая Инструменты Visual Studio для Office .

0 голосов
/ 20 ноября 2013

Начиная с 2013 года, лучшим вариантом может быть сценарий Visual Studio через IronPython, обеспечивающий лучшую 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...