了解如何在Python中使用COM

2024-10-01 15:34:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用COM实现python中的VB程序。以下是VB程序中的相关行:

eConCall = New Microsoft.Dynamics.GP.eConnect.eConnectMethods
eConCall.eConnect_EntryPoint(sConnectionString, EnumTypes.ConnectionStringType.SqlClient, myXmlDocument, EnumTypes.SchemaValidationType.None)

在Python中,我在做:

^{pr2}$

但是eConCall没有eConnect_EntryPoint方法。事实上,它似乎没有任何方法:

eConCall = win32com.client.gencache.EnsureDispatch("Microsoft.Dynamics.GP.eConnect.eConnectMethods")
dir(eConCall)

印刷品:

['CLSID', '_ApplyTypes_', '__doc__', '__eq__', '__getattr__', 
'__init__', '__module__', '__ne__', '__repr__', '__setattr__', 
'_get_good_object_', '_get_good_single_object_', '_oleobj_', 
'_prop_map_get_', '_prop_map_put_', 'coclass_clsid']

我很确定我误解了应该如何使用Dispatch以及如何在Python中访问eConnectMethods。一个善良的人能帮我吗?如何获得一个eConnectMethods的实例,以便对其调用eConnect_EntryPoint?在


Tags: 方法程序getobjectmicrosoftgpgoodvb
3条回答

我认为,你看不到任何方法,因为你有所谓的延迟绑定,这意味着无论你试图调用什么,都会在运行时通过标准的COM-IDispatch接口进行检查,当你使用有效的方法/属性时,它就可以工作了。或者你得到运行时错误,就像在VBScript中。在

对于后期绑定试用和错误,您的任务似乎不那么容易,也许您需要检查早期绑定选项-检查此链接-http://oreilly.com/catalog/pythonwin32/chapter/ch12.html。在

我还建议您尝试一些更简单的COM示例,这些示例将帮助您熟悉IDispatch在Python中的使用,即通过查看在线提供的更简单的Excel或Word自动化示例。在

更新好的,我错过了您已经尝试创建早期绑定包装器。看看结果makepy.py(在\Lib\site packages\win32com\gen_py\.py中)并将其与COM服务器的IDL进行比较。也许该方法仍然可以通过后期绑定使用,尽管由于某种原因它没有将它放入包装器中。。在

你应该考虑允许低级别访问COM的COM类型

相关问题 更多 >

    热门问题