Я делаю скрипт на Python, который использует API сценариев GUI SAP через win32com.Первое использование выглядит следующим образом:
from win32com.client import Dispatch
objWrapper = Dispatch("SapROTWr.SapROTWrapper")
Это прекрасно работает при использовании 32-разрядного интерпретатора Python, но не при использовании 64-разрядного интерпретатора, что выдает ошибку «Класс не зарегистрирован». Есть ли способ сделать это, особенно без прав администратора?
Ответ по умолчанию, вероятно, будет выглядеть примерно так: "64-разрядный процесс не может загрузить 32-разрядныйDLL ", но я подозреваю, что это может быть как-то сделано, потому что:
Эта ссылка упоминает процесс" COM Surrogate ", который может решить проблему, что по моим поискам показывает, что сама DLL может быть загружена dllhost.exe
. Комментарий к этому ответу затрагивает метод, но не решает его.
Приложения MS Office, как, например, Excel, делают это без проблем.Выполнена даже самая сложная часть, которая позволяет 32-битному приложению получить доступ к 64-битному серверу.Я просто не уверен, как это сделать, так как COM немного похож на черную магию, и я не знаю, смогу ли я сделать это с сторонними DLL, такими как SAP.Отсутствие прав администратора усложняет ситуацию.
Мне фактически разрешено использовать API сценариев SAP GUI из 64-битного Excel (64-битного) VBA.Ниже приведен пример модуля, для которого я не должен был редактировать ссылки VBA:
Public Sub SimpleSAP()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start a transaction
session.StartTransaction "IH01"
End Sub
Итак, как я могу это сделать из Python 64-битный переводчик?