[Python] win32com 基本教學

程式語言:Python
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 Python
Generate a static COM proxy

留言