한글 2018과 한글 2022에서 InitScan에 차이가 있는지 궁금합니다

안녕하세요, Python으로 win32를 사용하여 한글 컨트롤 메서드 사용중에 있습니다.
한글 버전별로 테스트 중에 있는데,

InitScan이 2022에서는 잘 동작하는 메서드가 2018버전에서 적용하려고 하니 오류가 발생합니다.
혹시 2022와 2018버전에서의 InitScan 메서드의 차이가 있는지 궁금합니다.

range는 0x0071, _epara, _epos를 설정하여 사용하였습니다.
아래는 오류메시지 입니다.

Traceback (most recent call last): File "src\gui\select_alert.py", line 118, in y_func File
"C:\Users\****\AppData\Local\Temp\tmplqmh0se8\gen_py\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\[IHwpObject.py](http://ihwpobject.py/)", line 435, in InitScan return 
self._oleobj_.InvokeTypes(10017, LCID, 1, (11, 0), ((12, 1), (12, 1), (12, 1), (12, 1), (12, 1), (12, 1)),option 
pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)
1개의 좋아요

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

현재 담당자가 내용을 확인하고 있습니다. 조금만 기다려 주세요.

한컴디벨로퍼를 이용해 주셔서 감사합니다.

2개의 좋아요

안녕하세요.

InitScan의 변동사항은 없습니다. 테스트 환경설정에 오류가 있을 듯 한데…

컨트롤 등록이 한글버전 변경에 따라 제대로 등록이 되었는가 라던지…

오류가 발생하는 간단한 샘플코드 주시면 저도 확인을 해보도록 하겠습니다.

2개의 좋아요
import pythoncom
import win32com.client as win32


def get_exist_hwp(_pythoncom, _win32):
    
    DISPLAY_NAME = '!HwpObject'
    context = _pythoncom.CreateBindCtx(0)
    hwp = None
    running_coms = _pythoncom.GetRunningObjectTable()
    monikers = running_coms.EnumRunning()
    for moniker in monikers:
        name = moniker.GetDisplayName(context, moniker)
        if DISPLAY_NAME in name:
            obj = running_coms.GetObject(moniker)
            hwp = _win32.gencache.EnsureDispatch(obj.QueryInterface(_pythoncom.IID_IDispatch))
            break


    return hwp

hwp = get_exist_hwp(pythoncom, win32)

is_success = hwp.InitScan(Range=0x0071, epara=1 , epos=5)
text = ''
while is_success :
    status, content = hwp.GetText()
    
    if status == 1 or status == 0:
        is_success = False
    else :
        text += content

hwp.ReleaseScan()


print(text)
print(hwp.GetPos())

문서 시작부터 어느 지점까지 텍스트를 스캔하고자할때 2022에서는 잘 나오는 것이 2018에서는 아래 에러가 발생합니다.

Traceback (most recent call last):
  File "c:\Users\****\Desktop\projects\****\test-proxy.py", line 58, in <module>
    is_success = hwp.InitScan(Range=0x0071, epara=1 , epos=5)
  File "C:\Users\****\AppData\Local\Temp\gen_py\3.9\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\IHwpObject.py", line 435, in InitScan
    return self._oleobj_.InvokeTypes(10017, LCID, 1, (11, 0), ((12, 1), (12, 1), (12, 1), (12, 1), (12, 1), (12, 1)),option
pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)

예를 들어서 저 코드를 기준으로 2018과 2022에 아래 해당 문자를 놓고 실행해보면 2022는 "안녕하세요 반갑습니다"까지 잘 출력이 되고 2018은 위 에러가 발생합니다.

안녕하세요
반갑습니다
어서오세요
환영합니다

1개의 좋아요

안녕하세요 ^^
올려주신 코드를 보니 한글 오토메이션 코드 같아 제가 대신 테스트해봤습니다.
일단 제 자리에서는 정상 동작을 하고있습니다~!

한글 2018 모듈이 이상할수도 있으니 "한컴 기본 설정"을 통해 초기화 후 테스트 또는 한글 2018 재설치후 테스트 가능하실까요?

우선 PC두대에서 테스트 해보았는데 정상 동작하고있습니다 ㅠ …!

3개의 좋아요