# -*- coding: mbcs -*-# Created by makepy.py version 0.5.01# By python version 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)]# From type library 'HwpObject.tlb'# On Tue Sep 20 21:31:28 2022'HwpObject 1.0 Type Library'
makepy_version ='0.5.01'
python_version =0x30a01f0import win32com.client.CLSIDToClass, pythoncom, pywintypes
import win32com.client.util
from pywintypes import IID
from win32com.client import Dispatch
# The following 3 lines may need tweaking for the particular server# Candidates are pythoncom.Missing, .Empty and .ArgNotFound
defaultNamedOptArg = pythoncom.Empty
defaultNamedNotOptArg = pythoncom.Empty
defaultUnnamedArg = pythoncom.Empty
CLSID = IID('{7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBC}')
MajorVersion =1
MinorVersion =0
LibraryFlags =8
LCID =0x0from win32com.client import DispatchBaseClass
classHAction(DispatchBaseClass):'HAction Interface'
CLSID = IID('{1A10DC8D-1155-4EE3-9EA2-1A160CDE2735}')
coclass_clsid =NonedefExecute(self, actname=defaultNamedNotOptArg, pVal=defaultNamedNotOptArg):'method Execute'return self._oleobj_.InvokeTypes(15001, LCID,1,(11,0),((8,1),(9,1)), actname
, pVal)defGetDefault(self, actname=defaultNamedNotOptArg, pVal=defaultNamedNotOptArg):'method GetDefault'return self._oleobj_.InvokeTypes(15000, LCID,1,(11,0),((8,1),(9,1)), actname
, pVal)defPopupDialog(self, actname=defaultNamedNotOptArg, pVal=defaultNamedNotOptArg):'method PopupDialog'return self._oleobj_.InvokeTypes(15002, LCID,1,(11,0),((8,1),(9,1)), actname
, pVal)defRun(self, actname=defaultNamedNotOptArg):'method Run'return self._oleobj_.InvokeTypes(15003, LCID,1,(11,0),((8,1),), actname
)
_prop_map_get_ ={}
_prop_map_put_ ={}def__iter__(self):"Return a Python iterator for this object"try:
ob = self._oleobj_.InvokeTypes(-4, LCID,3,(13,10),())except pythoncom.error:raise TypeError("This object does not support enumeration")return win32com.client.util.Iterator(ob,None)classHActionCrossRef(DispatchBaseClass):'HActionCrossRef Interface'
CLSID = IID('{D2C9C0DC-CB0D-487C-88C5-358FD78D2F82}')
coclass_clsid =NonedefCreateItemArray(self, wszItemName=defaultNamedNotOptArg, pVal=defaultNamedNotOptArg):'method CreateItemArray'return self._oleobj_.InvokeTypes(15000, LCID,1,(24,0),((8,1),(3,1)), wszItemName
, pVal)
_prop_map_get_ ={"Command":(28703,2,(8,0),(),"Command",None),"HSet":(1,2,(9,0),(),"HSet",None),}
_prop_map_put_ ={"Command":((28703, LCID,4,0),()),"HSet":((1, LCID,4,0),()),}def__iter__(self):"Return a Python iterator for this object"try:
ob = self._oleobj_.InvokeTypes(-4, LCID,3,(13,10),())except pythoncom.error:raise TypeError("This object does not support enumeration")return win32com.client.util.Iterator(ob,None)
Python
개인적으로는 액션 파라미터셋의 인자들을 확인하는 데 위 파일을 종종 참고하고 있습니다.
이 파일을 생성하는 가장 간편한 방법은
pywin32 패키지 설치시 함께 딸려오는 pythonwin.exe를 실행하는 것입니다.
이게 어디 설치되어 있냐면,
보통은 "파이썬 설치경로 / Lib / site-packages / pythonwin" 안에 pythonwin.exe가 있을 것입니다.
pythonwin.exe 창이 뜨면 상단 Tools 메뉴의 COM MakePy Utility를 클릭한 후
HwpObject 1.0 Type Library (1.0) 을 선택하고 OK를 눌러줍니다.
Importing module이라는 메시지가 출력되면서 생성완료
콘솔에 출력된 경로로 찾아가봅시다. 저의 경우에는
>>> Generating to C:\Users\smj02\AppData\Local\Temp\gen_py\3.10\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0.py
Python
라고 출력되네요. 찾아가보면,
위와 같이 괴상한 이름의 파이썬 파일이 생성되어 있습니다.
여러분의 코드 에디터로 이 파일을 한 번 열어봅시다.
hwp.HAction 클래스의 메서드 4개와 각각의 파라미터정보
위 파일은 2만 줄이 넘으므로 한 줄씩 정독하는 것은 무리이고,
파라미터 오류가 나거나, 어떤 인자가 있는지 궁금할 때,
또 어떤 메서드가 숨겨져 있는지 검색해보는 데 활용하실 수 있습니다.
hwp 오브젝트 안에서 사용가능한 모든 API가 나열되어 있고, 모든 파라미터셋의 파라미터들을 검색할 수 있지만, API매뉴얼에 없는 메서드를 찾아 실행하기는 어렵습니다. 파라미터 설명이 없기 때문에 시간도 많이 걸리는 등 한계가 있습니다. 또한 단축명령어인 Run() 안에 들어가는 액션문자열도 검색되지 않습니다.
여담으로, 제가 파이썬으로 한/글 자동화 작업을 시작할 수 있었던 첫걸음도
바로 이 파일을 생성하면서인데요.
13,457번째 라인의 주석에 보면 "HWPFrame.HwpObject"라는 문자열이 있습니다.
당시 공공기관 재직하면서 win32를 통해 엑셀자동화만 활용하던 시절에
엑셀의 CoClass 문자열인 "Excel.Application"을 통해 엑셀을 파이썬으로 열 수 있듯이
아래아한글의 CoClass 문자열만 알아내면 파이썬으로 한/글을 자동화할 수 있겠다는 생각에
댓글