Что можно сделать с COM/ActiveX в Python? [закрытый]

Вместо:

'use strict';

/// <reference path="typings/tsd.d.ts" />

Попробуйте:

/// <reference path="typings/tsd.d.ts" />

'use strict';

, т.е. первый путь ссылки.

38
задан fred 5 December 2018 в 19:40
поделиться

2 ответа

Сначала вам нужно установить замечательный модуль pywin32 .

Он обеспечивает поддержку COM. Вам необходимо запустить утилиту makepy . Он расположен по адресу C: \ ... \ Python26 \ Lib \ site-packages \ win32com \ client . В Vista она должна запускаться с правами администратора.

Эта утилита покажет все доступные COM-объекты. Вы можете найти свой, и он сгенерирует оболочку python для этого объекта.

Обертка - это модуль python, созданный в C: \ ... \ Python26 \ Lib \ site-packages \ win32com \ gen_py папку. Модуль содержит интерфейс COM-объектов. Имя файла - это уникальный идентификатор COM. Если у вас много файлов, иногда бывает сложно найти нужный.

После этого вам просто нужно вызвать нужный интерфейс. Это волшебно: )

Краткий пример с помощью excel

import win32com.client

xlApp = win32com.client.Dispatch("Excel.Application")
xlApp.Visible=1

workBook = xlApp.Workbooks.Open(r"C:\MyTest.xls")
print str(workBook.ActiveSheet.Cells(i,1))
workBook.ActiveSheet.Cells(1, 1).Value = "hello"                
workBook.Close(SaveChanges=0) 
xlApp.Quit()
42
ответ дан 27 November 2019 в 03:48
поделиться

По сути, вы можете выполнить эквивалент позднего связывания. Таким образом, все, что отображается через IDispatch, можно использовать.

Вот код, который я написал в эти выходные, чтобы получить изображение с двух устройств через Windows Image Acquisition 2.0 и поместить данные во что-то, что я могу вставить в пользовательский интерфейс на основе gtk.

WIA_COM = "WIA.CommonDialog"
WIA_DEVICE_UNSPECIFIED = 0
WIA_INTENT_UNSPECIFIED = 0
WIA_BIAS_MIN_SIZE = 65536
WIA_IMG_FORMAT_PNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"

def acquire_image_wia():
    wia = win32com.client.Dispatch(WIA_COM)
    img = wia.ShowAcquireImage(WIA_DEVICE_UNSPECIFIED,
                           WIA_INTENT_UNSPECIFIED,
                           WIA_BIAS_MIN_SIZE,
                           WIA_IMG_FORMAT_PNG,
                           False,
                           True)
    fname = str(time.time())
    img.SaveFile(fname)
    buff = gtk.gdk.pixbuf_new_from_file(fname)
    os.remove(fname)

return buff

Это не красиво, но работает. Я бы сказал, что это эквивалентно тому, что вам пришлось бы писать на VB.

4
ответ дан 27 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: