COM服务器只是一个软件(DLL或可执行文件),它将通过已定义的协议接受远程过程调用(RPC)。该协议的一部分说,服务器必须具有存储在Windows注册表中的唯一ID。在我们的情况下,这意味着您已经“注册”了不存在的服务器。因此出现错误(找不到组件)。
因此,应该是这样(通常,这是未经测试的代码!):
import pythoncomclass HelloWorld: _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER _reg_clsid_ = "{B83DD222-7750-413D-A9AD-01B37021B24B}" _reg_desc_ = "Python Test COM Server" _reg_progid_ = "Python.TestServer" _public_methods_ = ['Hello'] _public_attrs_ = ['softspace', 'noCalls'] _readonly_attrs_ = ['noCalls'] def __init__(self): self.softspace = 1 self.noCalls = 0 def Hello(self, who): self.noCalls = self.noCalls + 1 # insert "softspace" number of spaces return "Hello" + " " * self.softspace + str(who)if __name__ == '__main__': if '--register' in sys.argv[1:] or '--unregister' in sys.argv[1:]: import win32com.server.register win32com.server.register.UseCommandLine(HelloWorld) else: # start the server. from win32com.server import localserver localserver.serve('B83DD222-7750-413D-A9AD-01B37021B24B')然后,您应该从命令行运行(假设脚本名为HelloWorldCOM.py):
HelloWorldCOM.py-注册HelloWorldCOM.py
类HelloWorld是服务器的实际实现。它公开了一个方法(Hello)和几个属性,这两个属性之一是只读的。使用第一个命令,注册服务器;在第二个应用程序中,您可以运行它,然后其他应用程序可以使用它。



