안녕하세요, 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개의 좋아요
cwy
2
안녕하세요. 한컴디벨로퍼입니다.
현재 담당자가 내용을 확인하고 있습니다. 조금만 기다려 주세요.
한컴디벨로퍼를 이용해 주셔서 감사합니다.
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개의 좋아요