Как написать сценарий Visual Studio 2008 из Python?

Я хотел бы написать сценарии 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 другую строку для идентификации? Вышеуказанный метод устарел?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
7
0
2 503
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы можете попробовать собственную версию .Сеть, IronPython. Он имеет надстройку ПРОТИВ, IronPythonStudio.

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

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

Ответ принят как подходящий

Я не знаю, поможет ли это вам с 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 года для тестирования.

Без проблем. Рад, что смог помочь.

ryan_s 22.10.2008 22:06

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

С 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

Другие вопросы по теме