Передача типа пользовательской переменной в COM-объект с помощью PythonPython

Программы на Python
Ответить
Anonymous
 Передача типа пользовательской переменной в COM-объект с помощью Python

Сообщение Anonymous »

Я пытаюсь создать программу на Python для извлечения истории файлов из хранилища SolidWorks PDM Professional, и вызов метода для получения истории файлов требует передачи пустого массива типа «EdmHistoryItem», который он заполнит результатами.

Код: Выделить всё

v = win32com.client.VARIANT(pythoncom.VT_BYREF | pythoncom.VT_ARRAY | pythoncom.VT_VARIANT | pythoncom.VT_SAFEARRAY | pythoncom.VT_CARRAY, [1,2,3,4,5])
vault = win32com.client.dynamic.Dispatch('ConisioLib.EdmVault')
vault.LoginAuto(vault_name, 0)

fname = '\FP_Child1.SLDPRT'
fldr = vault.GetFolderFromPath ('C:\\PATH\\TO\\FOLDER')
file, fldr = vault.GetFileFromPath('C:\\PATH\\TO\\FILE', fldr)#{}'.format(fname))
print(file.Name)
history_util = vault.CreateUtility(17)
history_util.AddFile(file.ID)
history_util.GetHistory(v, 512)
Я пытался использовать pythoncom для создания поддельного варианта, но он либо возвращает ошибку несоответствия типов, либо «Ошибка памяти: СозданиеSafeArray», что не имеет смысла, поскольку в образце файла есть только несколько записей в его истории. Любая помощь здесь будет здорово!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»