COM是Microsoft的一项技术,它允许对象进行通信,而无需任何对象知道
有关对方的任何细节,甚至是其实施的语言。
# SimpleCOMServer.py - A sample COM server - almost as small as they come!
#
# We expose a single method in a Python COM object.
class PythonUtilities:
_public_methods_ = [ 'SplitString' ]
_reg_progid_ = "PythonDemos.Utilities"
# NEVER copy the following ID
# Use"print pythoncom.CreateGuid()" to make a new one.
_reg_clsid_ = "{81101F84-35ED-4CE4-8A06-E530828AA02A}"
def SplitString(self, val, item=None):
import string
if item != None:
item = str(item)
return str(val).split(item)
# Add code so that when this script is run by
# Python.exe,.it self-registers.
if __name__=='__main__':
print("Registering COM server…")
import win32com.server.register
win32com.server.register.UseCommandLine(PythonUtilities)
import win32com.client as win32 msword = win32.Dispatch('PythonDemos.Utilities') print(msword.SplitString('i have a pen'))
_public_methods_:暴露接口的列表
_reg_progid_:名称用于创建com对象,比如win32.Dispatch调用
_reg_clsid_:唯一id
SplitSring:暴露的函数,COM传递所有的字符通过Unicode,所以需要str()转化
COM类包括注册的ProgID, CLSID,暴露一个SplitString函数,供com对象调用