· 톺아보기

PC/모바일

파이썬으로 기존에 열려 있는 아래아한글 프로그램을 제어하는 방법

일코 ·

조회 35,527 · 공감 42 · 댓글 12

안녕하세요?


기존에 열린 한/글 창을 파이썬으로 제어하는 방법을 몰라서

한컴오피스 개발자포럼에 문의글을 남겨봤습니다.

하루만에 한컴 개발자님께서 직접 회신을 주셔서 클리앙에도 공유해봅니다.


import win32cowww.client as win32
import pythoncom

context = pythoncom.CreateBindCtx(0)

# 현재 실행중인 프로세스를 가져옵니다.
running_coms = pythoncom.GetRunningObjectTable()
monikers = running_coms.EnumRunning()

for moniker in monikers:
    name = moniker.GetDisplayName(context, moniker);
    # moniker의 DisplayName을 통해 한글을 가져옵니다
    # 한글의 경우 HwpObject.버전으로 각 버전별 실행 이름을 설정합니다.
    if name == '!HwpObject.120.1':
        # 120은 한글 2022의 경우입니다.
        # 현재 moniker를 통해 ROT에서 한글의 object를 가져옵니다.
        obje = running_coms.GetObject(moniker)
        # 가져온 object를 Dispatch를 통해 사용할수 있는 객체로 변환시킵니다.
        hwp = win32.gencache.EnsureDispatch(obje.QueryInterface(pythoncom.IID_IDispatch))
        # 그이후는 오토메이션 api를 사용할수 있습니다.


참고로 위 코드의 "120.1"의 120은 한/글 2022의 경우인데,

버전별로 해당 숫자를 확인하는 가장 쉬운 방법은 한/글 설치폴더에서 확인하는 것입니다.

020.png


위 코드의 실행화면입니다.


업무자동화에 많이 활용해 주시기 바랍니다.

감사합니다.

행복한 하루 되세요!^^

댓글 12

  1. 까쭈 · · 공감 1
    유용하겠네요. 감사합니다.^^
  2. notimetodie · · 공감 1
    유용한 팁으로 스크랩 했습니다. 감사합니다.
  3. joyfuI · · 공감 1
    군대 있을 때 자바스크립트로(한/글 매크로가 자바스크립트 기반이라서 가능) 한/글 업무 자동화했었는데 파이썬도 방법이 있군요.
  4. 우리가보수다 · · 공감 2
    파이썬 계의 미취학 아동인지라 뭔지 모르지만 대단하네요
  5. 디지털라잎 · · 공감 1
    그때그떄 코드활용이 가능하겠네요. 감사합니다! 인프런에 파이썬 강의도 신청했습니다. 할인기간을 놓쳤지만요 ㅎㅎ
  6. 하늘땅별 · · 공감 1
    이게 언제 필요한건가여?
  7. 일코 ·
    @하늘땅별님 파이썬으로 아래아한글 프로그램을 제어할 수 있습니다. 보고서나 대량의 문서를 코딩으로 조작할 수 있어서, 업무자동화에 활용합니다^^

    예제는 https://martinii.fun 이나 https://youtube.com/@python-hwp 등에서 확인하실 수 있습니다ㅎ
  8. 찬탄 · · 공감 1
    일단 스크랩했습니다ㅎㅎ 공부할게 참 많네요
  9. 잇히이잉 · · 공감 1
    항상 잘 보고 있습니다 감사합니다
    파이참에서 파이썬 콘솔을 어떻게 주피터 노트북 형식으로 사용가능 한가요??
  10. 일코 ·
    @잇히이잉님 Shift-Alt-E 단축키입니다. 현재 커서가 위치한 라인이나, 선택한 라인을 콘솔로 보내 바로 실행할 수 있습니다.
  11. 일코 ·
    @잇히이잉님 그리고 ipython 모듈을 설치하시기만 해도 파이참의 콘솔 프롬프트가 ipython타입으로 자동으로 바뀝니다ㅎ
  12. 잇히이잉 · · 공감 1
    @일코님
    네 근데 보이기에 ln [7] : 형식으로 주피터랑 똑같아 보여서 혹시 다른 플러그인 같은걸 설치해야 하나 싶어서요 ㅎㅎ
    아 답변 주셨네요! 감사합니다!!^^

팁과강좌 최근 글

팁과강좌 목록 더 보기