Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2007 16:25:28

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

На языке VBScript часто можно получить информацию о типе COM-объекта, что бывает удобно (например, чтобы быстро найти необходимую информацию в MSDN):

Set obj = CreateObject("ADODB.Connection")
WScript.Echo TypeName(obj)
Такой скрипт выдаст: “Connection”.
Однако, аналогичный скрипт на Python не выдаёт такой информации:
# -*- coding: cp1251 -*-
import win32com.client
obj = win32com.client.Dispatch("ADODB.Connection")
print type(obj)
Такой скрипт выдаст: “<type ‘instance’>”.
Есть ли способ получить информативное сообщение на Python?



Офлайн

#2 Июль 13, 2007 16:38:51

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

В com особо не шарю, так что может не совсем то что надо :)

>>> import win32com.client
>>> o=win32com.client.Dispatch('ADODB.Connection')
>>> print repr(o)
<COMObject ADODB.Connection>
>>>



Офлайн

#3 Июль 13, 2007 20:59:13

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

Спасибо, это лучше, чем <type ‘instance’> :).



Офлайн

#4 Июль 14, 2007 08:37:40

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

Хотя… Пользы от этого тоже мало :). Функция repr похоже выдаёт информацию только об объектах, “непосредственно” созданных в скрипте. О возвращаемых вещах она ничего не знает. Например:

# -*- coding: cp1251 -*-
import win32com.client
shell = win32com.client.Dispatch("Shell.Application")
folder = shell.NameSpace("C:\\")
print repr(folder)
Выдаст: “<COMObject <unknown>>”. VBScript в такой ситуации выдаст “Folder3”, что гораздо информативнее.



Отредактировано (Июль 14, 2007 08:38:08)

Офлайн

#5 Июль 14, 2007 12:50:02

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

сделай dir(folder) и посмотри какие методы/атрибуты есть у этого объекта. может там найдется что-то типа name, type, getname, gettype.



Офлайн

#6 Июль 16, 2007 16:14:08

eugene
От:
Зарегистрирован: 2007-06-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython: получение информации о типе COM-объекта

По-моему нужно смотреть в сторону COM Makepy utility.
Подробней можно глянуть здесь http://www.oreilly.com/catalog/pythonwin32/chapter/ch12.html



Офлайн

#7 Июль 16, 2007 17:44:51

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

ActivePython: получение информации о типе COM-объекта

Нужно брать ITypeInfo у IDispatch и потом его изучать. Например, GetDocumentation с индексом -1 дает докстринги для самого объекта, а не его функций.


def getType(disp):
ti = disp._oleobj_.GetTypeInfo(0)
return ti.GetDocumentation(-1)

import win32com.client
shell = win32com.client.Dispatch(“Shell.Application”)
folder = shell.NameSpace(“C:\\”)
print getType(folder)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version