이거 하나만 알려주시면 소원이 없겠습니다ㅜㅜㅜ

안녕하세요!

질문이 하나 있습니다.
파이썬으로도 기존에 열린 아래아한글 프로그램을 제어할 수 있나요?
분명 공식문서에도 ROT를 통해,
기존에 열려 있는 아래아한글을 제어하는 코드가
상세하게 나와 있는데,
이를 파이썬에서 어떤 모듈로 구현해봐도

OSError: [WinError -2147221021] 작업을 사용할 수 없습니다

라는 오류메시지가 뜹니다.
어떤 부분이 문제인지 정말 모르겠습니다..
아래아한글 개발자님들이라면 해법을 알고 계실 것 같아
포럼에 글 남겨봅니다.

작년 제 위시리스트 중 하나였는데
해결을 못 했네요ㅜㅜ

안녕하세요, ilco님 ^^
기존 ROT를 이용한 코드를 통해서 파이썬으로 구현해보았습니다 ~!
pythoncom 및 win32com 을 이용시 현재 실행중인 한글에 대한 제어가 가능합니다 .
제가 테스트 할때는 잘 동작을 했는데 확인 후 추가 문의 사항이 있으실 경우 댓글 부탁드립니다.
감사합니다. :slight_smile:

import win32com.client as win32 
import pythoncom 
from win32com.client import Dispatch

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 = Dispatch(obje.QueryInterface(pythoncom.IID_IDispatch))
         # 그이후는 오토메이션 api를 사용할수 있습니다. 
         # f:\\test.hwp를 여는 예제 입니다. 
         hwp.Open("f:\\test.hwp", arg="forceopen:True;suspendpassword:True;versionwarning:False")

헐!!!
헐!!!
돼요!
으악 감사합ㄴ디ㅏ!!!
감사합니다아!!!^^
친절한 주석까지!!!
계좌번호나 카톡 아이디라도 좀 알려주세요!
기프티콘이라도 좀 쏴드리고 싶어요!!!
ㅇ ㅣ흥분을 어떻게 가라앉히죠ㅠㅜㅠㅠㅠㅠㅠㅠㅠ

마음만으로 감사 드립니다 ~!
ilco님께 큰 도움이 된것 같아서 그것만으로 뿌듯하고 기쁘네요 !! :blush:
좋은 하루되세요 ~!

저는 2020버전 이라서 “!HwpObject.110.1” 로 수정하였습니다.

import win32com.client as win32
import pythoncom
from win32com.client import Dispatch

context = pythoncom.CreateBindCtx(0)

running_coms = pythoncom.GetRunningObjectTable()
monikers = running_coms.EnumRunning()

for moniker in monikers:
name = moniker.GetDisplayName(context, moniker)
print(name)
# moniker의 DisplayName을 통해 한글을 가져옵니다
# 한글의 경우 HwpObject.버전으로 각 버전별 실행 이름을 설정합니다.
if name == ‘!HwpObject.110.1’:
# 120은 한글 2022의 경우입니다.
# 현재 moniker를 통해 ROT에서 한글의 object를 가져옵니다.
obje = running_coms.GetObject(moniker)
# 가져온 object를 Dispatch를 통해 사용할수 있는 객체로 변환시킵니다.
hwp = Dispatch(obje.QueryInterface(pythoncom.IID_IDispatch))
# 그이후는 오토메이션 api를 사용할수 있습니다.
# f:\test.hwp를 여는 예제 입니다.
hwp.Open(r"D:\test.hwp",arg=“forceopen:True;suspendpassword:True;versionwarning:False”)

그런데 실행 결과 오류가 발생했습니다.
hwp.Open(r"D:\test.hwp",arg=“forceopen:True;suspendpassword:True;versionwarning:False”)
File “<COMObject >”, line 2, in Open
pywintypes.com_error: (-2147352562, ‘매개 변수의 개수가 잘못되었습니다.’, None, None)

혹시, pywin32 와 보안모듈(Automation)도 다시 설치해 봤습니다.
감사합니다.

안녕하세요. 한컴디벨로퍼입니다.

유용한 정보를 공유해 주셔서 감사합니다.
한컴디벨로퍼는 고객님의 참여로 성장하고 있습니다. 관심과 기대에 부응하는 한컴디벨로퍼가 되겠습니다.

감사합니다.
한컴디벨로퍼 드림

안녕하세요,

매개 변수가 잘못된것 같습니다 ^^
경로에 보면 r 이라고 잘못들어가있는것 같습니다.

hwp.Open(r"D:\test.hwp",arg=“forceopen:True;suspendpassword:True;versionwarning:False”)

그리고 d:\test.hwp가 되어야할것 같습니다.

감사합니다.

감사합니다. d 소문자로 바꾸니… 바로 되네요… ㅎ

파이썬에서 r을 텍스트 앞에 붙여주면 raw string으로 처리를 하는군요 …!
해당 사용법은 맞는것 같습니다 !! ㅎㅎ;;
좋은 사용방법 배웠습니다 ~! 감사합니다. :slight_smile: