程式語言:Python
Package:pypiwin32
功能:利用 COM 控制 excel, word, ppt 等程式
但若已跑過 makepy.py,那麼會自動轉換為 Static Dispatch objects
可用 win32com.client.constants.__dict__ 查詢
Generate a static COM proxy
Package:pypiwin32
功能:利用 COM 控制 excel, word, ppt 等程式
Dynamic Dispatch Object
這表示程式只在使用時,才產生 COMOBJECT,缺點是並無對應的常數但若已跑過 makepy.py,那麼會自動轉換為 Static Dispatch objects
import win32com.client obj = win32com.client.Dispatch ("Excel.Application") print(repr(obj)) # <COMObject Excel.Application>以下程式碼仍是動態產生
import win32com.client obj = win32com.client.dynamic.Dispatch ("Excel.Application") print(repr(obj)) # <COMObject Excel.Application>
Static Dispatch Objects
常數放在 win32com.client.constants 中可用 win32com.client.constants.__dict__ 查詢
from win32com.client import makepy # 選擇欲產生的 Type Library makepy.main()
import sys from win32com.client import makepy # 指定 tlb, olb, ocx, dll 產生 sys.argv = ["makepy", r"c:\windows\msagent\agtctl15.tlb"] makepy.main()
import win32com.client # 直接產生並連結 obj = win32com.client.gencache.EnsureDispatch("Excel.Application") print(repr(obj)) #<win32com.gen_py.Microsoft Excel 15.0 Object Library._Application instance at 0x72576808>
使用前再產生 Static Dispatch Objects
利用以下指令查詢python makepy.py -i Microsoft Excel 15.0 Object Library {00020813-0000-0000-C000-000000000046}, lcid=0, major=1, minor=8 >>> # Use these commands in Python code to auto generate .py support >>> from win32com.client import gencache >>> gencache.EnsureModule('{00020813-0000-0000-C000-000000000046}', 0, 1, 8)
可查詢 COM Object 的 Function
利用以下指令查詢python combrowse.py # 從 Registered Type Libraries 查詢 python selecttlb.py # 找到對應的 tlb python tlbrowse.py # 從找到的 tlb 查詢 dir(obj) help(obj) 直接從 makepy.py 產生的文件查詢
參考:
Quick Start to Client side COM and PythonGenerate a static COM proxy
留言
張貼留言