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

안녕하세요!

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

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

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

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

3개의 좋아요

안녕하세요, 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")
5개의 좋아요

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

4개의 좋아요

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

4개의 좋아요

저는 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)도 다시 설치해 봤습니다.
감사합니다.

1개의 좋아요

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

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

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

1개의 좋아요

안녕하세요,

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

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

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

감사합니다.

1개의 좋아요

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

2개의 좋아요

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

1개의 좋아요