我试图写一些脚本来使用与一个应用程序从外部控制它来到一个COM类型库。
不过,我停留在我使用Python库的COM(pythoncom和win32com):
使用COM浏览器,我能够导航找到GUID类型库我感兴趣的使用。
使用pythoncom,我能够轻松地浏览这个类型库,看看有什么对象可用可用。
>>> import win32com.client
>>> import pythoncom
>>> type_lib_iid = '{12345678-ABCD-EFGH-1234-12341234}'
>>> lib = pythoncom.LoadTypeLib(type_lib_iid, 1, 0)
>>> for index in range(0, lib.GetTypeInfoCount()):
print lib.GetDocumentation(index)[0]
print lib.GetTypeInfo(index).GetTypeAttr().iid
这将返回可用的COM对象(抱歉,如果我屠宰这个词汇)的所有GUID的。
奇怪的是,而由该调用返回的所有对象出现在COM浏览器,当我浏览类型库,只有81的可用4我可以呼叫调度上。 其余的回报:
'Class not registered.'
我的问题是两个部分:
1)它是如何可能的对象可以通过COM浏览器,并通过上面的调用来发现两者并用win32com.client.Dispatch不能赎回? [注:有问题的应用程序运行。]
2)我使用了错误的功能? 是调度不正确的? 我坦率地承认,我已经找到了文档Python的COM模块混乱,但我还没有发现其中存在的COM对象将不经任何调度的例子,所以我不知道在哪里可以从这里走。 此外,可以在被派遣的4个对象似乎工作完全文件另有说明。
[最后一点:如果我试图pythoncom.CoCreateInstance(TypeLibCLSID,无,1,GUIDofInterfaceObject)我得到不支持“界面“的关键接口,我需要用的是我想这里的GUID。]