Я делаю расширение для программы Windows, которая перехватывает объекты COM-сервера. Я хочу использовать Python для этого, и, насколько я понимаю, я могу использовать Py2exe для создания DLL с сервера comtypes.Использование ключевого слова установки ctypes_com_server Py2exe с Python 3
Для теста я написал простой класс, который вызывает метод печати, открытый через RPC. Я создал COM-интерфейс для этого класса, зарегистрировал его, создал экземпляр COM-объекта из другой программы Python и назвал метод печати. Оно работает.
(Я создал репозиторий для справки здесь: https://github.com/jakogut/python-inproc_server)
Однако, когда я использую py2exe создать DLL из моего COM-сервера, и попытаться зарегистрировать, что DLL с помощью regsvr32, всплывающее окно состояния:
модуль «RemotePrint.dll» был загружен, но вызов DllRegisterServer неудачно с кодом ошибки 0x80040201
до сих пор, я попытался запустить из командной строки администратора, очищая comtype и обновить библиотеку DLL, профилируя зависимости библиотеки времени выполнения с помощью Dependency Walker (она зависала/разбилась и не давала никакой полезной информации) и работала на другой машине.
Основываясь на том, что мой код работает так, как должен, когда я регистрирую его с помощью функции регистрации comtypes, я предполагаю, что это не работает как DLL из-за неправильной настройки с моей стороны или причуды с Py2exe и Python 3.
Да, я пробовал это, это не имело значения. – jakogut