한글 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개의 좋아요

안녕하세요.

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

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

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

1개의 좋아요
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은 위 에러가 발생합니다.

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

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

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

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

2개의 좋아요