한글 API 관련 문의입니다.

이 범주에서는 한글 오토메이션에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.
한글 automation을 사용해보고 있는데 궁금한 점이 있어 질문 드립니다.

api 중 Clear가 있고 Quit, Release이 있는데 이 세 api가 하는 각각의 기능이 궁금합니다.

일단 제가 알기론 프로세스 흐름이

  1. CreateDispatch로 hwp가 실행되면
  2. Open해서 파일을 열고 원하는 기능 실행
  3. 파일을 닫을 때 clear를 하고 Quit과 ReleaseDispatch를 하는 것으로 알고 있습니다.

질문)

  1. 그러면 clear가 열린 파일을 닫는 api 인가요?
  2. Quit과 ReleaseDispatch 2가지 api는 hwp 종료 api로 보이는데 Quit이 프로세스 종료하는 걸로 보이는데요. 그렇다면 메모리 해제도 Quit에서 하는 건지요? 종료 시에는 ReleaseDispatch도 해야 하는 것으로 아는데 이것도 종료하는 api인 것 같아서 Quit과 기능적으로 어떻게 구분되는지 궁금합니다.

자세한 답변 부탁 드립니다.

.1. 그러면 clear가 열린 파일을 닫는 api 인가요?
→ 열려진 문서를 닫고 빈 문서의 상태로 만드는 API 입니다.
→ 프로그램이 종료시키는 것은 아닙니다.

.2. Quit과 ReleaseDispatch 차이
→ Quit는 한글 프로그램을 종료하는 ‘한글’ API입니다.
→ ReleaseDispatch는 OLE 자동화 개체를 해제하는 ‘윈도우’ API입니다.
한글 오토메이션은 윈도우 OLE 자동화 기술을 기반으로 개발된 자동화 기능입니다.
그래서 OLE 개체를 생성해서 연결하기 위해서는 CreateDispatch를 해야하고, 연결을 해제하기 위해서는 ReleaseDispatch를 해야합니다. (C++)
한글 오토메이션 사용 후에 안정적인 종료를 위해서는 아래와 같이 수행해야 합니다.

  • CreateDispatch → … → Quit → ReleaseDispatch
1개의 좋아요

답변 감사드립니다. :slight_smile:

한 가지 더 질문이 있는데요.
위의 질문에서 보시면 Quit에서 메모리 해제도 하는지 질문했었습니다.
그에 대한 답변이 없어 다시 한 번 질문 드립니다.

메모리 해제는 Quit에서 종료 전에 하는건가요?
아니면 Clear에서 하는건가요?

다시 한 번 답변 부탁드립니다.

1개의 좋아요

언급하신 메모리의 대상을 알아야할 것 같습니다.
오토메이션은 클라이언트 프로그램에서 서버 프로그램(여기서는 한글 프로그램)을 제어하는 기능인데요.
Quit, Clear는 한글 프로그램(프로세스)의 동작을 제어하는 API입니다.
두 API는 클라이언트 프로그램에서 구현하고자 하는 제어 동작에 필요할 때 호출하면 됩니다. (메모리에 관계없이)

ReleaseDispatch는 클라이언트 프로그램(프로세스)의 메모리와 관련이 있어서 CreateDispatch와 ReleaseDispatch를 Pair를 맞춰서 호출하셔야 합니다.

감사합니다.

1개의 좋아요