要在Python中生成COM組件,可以使用pywin32庫。下面是一個簡單的示例,演示了如何創建一個COM組件:
import win32com.client
import pythoncom
from win32com.server import register
class MyCOMComponent:
_reg_clsid_ = "{YOUR-CLSID}" # 替換為你的CLSID
_reg_desc_ = "My COM Component"
_reg_progid_ = "MyCOMComponent"
_public_methods_ = ['hello'] # 可調用的公共方法
def hello(self):
return "Hello from My COM Component!"
if __name__ == "__main__":
# 注冊COM組件
register.UseCommandLine(MyCOMComponent)
# 創建COM服務器
pythoncom.CoInitialize()
clsid = pythoncom.CreateGuid()
server = win32com.server.register.UseCommandLine(MyCOMComponent, clsid=clsid)
# 運行COM服務器
pythoncom.CoInitialize()
pythoncom.CoInitializeSecurity(None, None, None, None, pythoncom.RPC_C_AUTHN_LEVEL_NONE, pythoncom.RPC_C_IMP_LEVEL_IMPERSONATE, None, pythoncom.EOAC_NONE)
server._InitServer()
# 進入消息循環
pythoncom.PumpMessages()
上述代碼定義了一個名為MyCOMComponent
的類,該類實現了一個名為hello
的公共方法。在__name__ == "__main__"
的代碼塊中,我們使用register.UseCommandLine
函數注冊了COM組件,并使用win32com.server.register.UseCommandLine
函數創建了COM服務器。然后,我們使用pythoncom.PumpMessages()
進入了消息循環,以等待客戶端調用COM組件的方法。
在實際使用中,你需要將代碼中的{YOUR-CLSID}
替換為你的COM組件的CLSID,可以使用pythoncom.CreateGuid()
生成一個新的CLSID。
請確保在運行代碼之前,已經安裝了pywin32庫和Python for Windows擴展(pywin32依賴的組件)。