亲爱的, 首先,这是我第一次在 Stackoverflow 上提问,所以如果我没有遵循正确的方法,请原谅我。
我遇到了 win32com 的问题,恳请您的帮助。 我正在尝试连接到 SAP GUI 以便自动执行某些任务。
import win32com.client
SapGuiAuto = win32com.client.GetObject('SAPGUI')
我收到以下错误(直到昨天一切正常..):
Traceback (most recent call last):
File "C:/Users/xxxxx/AppData/Roaming/JetBrains/PyCharmCE2020.1/scratches/PySAPscript.py", line 157, in <module>
SAP_OP()
File "C:/Users/xxxxx/AppData/Roaming/JetBrains/PyCharmCE2020.1/scratches/PySAPscript.py", line 18, in SAP_OP
SapGuiAuto = win32com.client.GetObject('SAPGUI')
File "C:\Users\xxxxx\PycharmProjects\yyyyyy\venv\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
return Moniker(Pathname, clsctx)
File "C:\Users\xxxxxx\PycharmProjects\yyyyyyy\venv\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147221020, 'Invalid syntax.', None, None)
我找到了一些有关此问题的文档,建议使用 pythoncom.CoInitialize():
但是我不知道如何使用这个功能来达到我的目的。
谢谢您的帮助!
我最近也遇到这个问题了
sap和python的启动权限不一样。 例如,这两个都应该以管理员权限运行,或以普通用户权限运行。
我不保证这个方法能解决你的问题,但你可以尝试:)
考虑到您有变量(SAP_Path、SAP_system_id、SAP_group)或(SAP_Path、 SAP_sid、SAP_instance_no)而不是...
shell = win32com.client.Dispatch("WScript.Shell")
call(SAP_Path + " /R/" + SAP_system_id + "/G/" + SAP_group)
OR: call(SAP_Path + " " + SAP_sid + " " + SAP_instance_no)
sap_gui_obj = win32com.client.GetObject("SAPGUI")
application = sap_gui_obj.GetScriptingEngine
connection = application.children(application.connections.count - 1)
session = connection.children(0)
session.findById("wnd[0]").maximize()
然后连接到您的底座。
尝试运行从
SAP GUI
(桌面)应用程序触发的脚本时,我遇到了同样的问题。对我有用的解决方案是接受使用 Flask
和 SAP GUI
和 pythoncom.CoInitialize()
语句操作的代码:pythoncom.CoUinitialize()