pywin32 не видит 32-х битный COM-сервер
От: ZegSoft Россия  
Дата: 30.11.22 08:25
Оценка:
Мне нужно подключиться к 32-х битному COM-серверу из Python.
ОС: Windows 10 x64.
Устанавливаю Python 3.11 (32-bit).
Устанавливаю pywin32:

pip install pywin32

судя по логам устанавливается 32-х битная версия:

pywin32-305-cp311-cp311-win32.whl (11.0 MB)

Пытаюсь получить доступ к COM-объекту:

import win32com.client
rastr = win32com.client.Dispatch("Astra.Rastr")

Получаю ошибку:
pywintypes.com_error: (-2147221005, ‘Недопустимая строка с указанием класса’, None, None)


Нужная мне программа имеет и 64-х битную версию. Когда я ее устанавливаю, все работает отлично. Но мне нужна именно 32-х битная версия.

Вопрос: почему я не могу получить доступ к 32-х битной версии COM-объекта из 32-х битной версии Питона и 32-х битной версии pywin32? Кто-нибудь сталкивался с этим? В какую сторону мне копать?
Re: pywin32 не видит 32-х битный COM-сервер
От: SаNNy Россия  
Дата: 30.11.22 11:07
Оценка:
Здравствуйте, ZegSoft, Вы писали:

ZS>Вопрос: почему я не могу получить доступ к 32-х битной версии COM-объекта из 32-х битной версии Питона и 32-х битной версии pywin32? Кто-нибудь сталкивался с этим? В какую сторону мне копать?

А через OleView получается посмотреть это 32-х разрядный COM объект?
Re[2]: pywin32 не видит 32-х битный COM-сервер
От: ZegSoft Россия  
Дата: 30.11.22 11:11
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>Здравствуйте, ZegSoft, Вы писали:


ZS>>Вопрос: почему я не могу получить доступ к 32-х битной версии COM-объекта из 32-х битной версии Питона и 32-х битной версии pywin32? Кто-нибудь сталкивался с этим? В какую сторону мне копать?

SNN>А через OleView получается посмотреть это 32-х разрядный COM объект?

Да, через OleView все видно. Если подключаться к объекту из C++, тоже все работает. А вот через скриптовые языки не получается (пробовал еще и через WScript в режиме x32 — тоже не работает).
Сейчас обнаружил еще один важный факт: попробовал получить доступ на чистой винде, установил Windows 10 x64 в виртуальной машине, установил эту программу, все работает корректно. Видимо это какой-то глюк именно моей винды. Вот только как его исправить. Не хотелось бы переустанавливать систему. Есть у кого-нибудь идеи, в чем может быть причина?
Re[3]: pywin32 не видит 32-х битный COM-сервер
От: SаNNy Россия  
Дата: 30.11.22 11:14
Оценка: 12 (2)
Здравствуйте, ZegSoft, Вы писали:

ZS>Да, через OleView все видно. Если подключаться к объекту из C++, тоже все работает. А вот через скриптовые языки не получается (пробовал еще и через WScript в режиме x32 — тоже не работает).

ZS>Сейчас обнаружил еще один важный факт: попробовал получить доступ на чистой винде, установил Windows 10 x64 в виртуальной машине, установил эту программу, все работает корректно. Видимо это какой-то глюк именно моей винды. Вот только как его исправить. Не хотелось бы переустанавливать систему. Есть у кого-нибудь идеи, в чем может быть причина?

Попробуйте перерегистрировать COM объект. Или как вариант, еще разрегистрировать х64 версию этого объекта перед перерегистрацией.
Re[4]: pywin32 не видит 32-х битный COM-сервер
От: ZegSoft Россия  
Дата: 30.11.22 11:25
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>Здравствуйте, ZegSoft, Вы писали:


ZS>>Да, через OleView все видно. Если подключаться к объекту из C++, тоже все работает. А вот через скриптовые языки не получается (пробовал еще и через WScript в режиме x32 — тоже не работает).

ZS>>Сейчас обнаружил еще один важный факт: попробовал получить доступ на чистой винде, установил Windows 10 x64 в виртуальной машине, установил эту программу, все работает корректно. Видимо это какой-то глюк именно моей винды. Вот только как его исправить. Не хотелось бы переустанавливать систему. Есть у кого-нибудь идеи, в чем может быть причина?

SNN>Попробуйте перерегистрировать COM объект. Или как вариант, еще разрегистрировать х64 версию этого объекта перед перерегистрацией.


Помогло!! Спасибо большое!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.