한글 오피스 2024에서 API를 사용한 문서 열기 및 닫기 오류

안녕하세요 ^^
파일에 대한 공유 URL을 만들어서 전달해주셔야 할것 같습니다.

구글에서 "구글 드라이브 파일 공유 링크 만들기"라고 검색하면 블로깅된 글이 많습니다. 해당 부분 참고하시면 될것 같습니다.
감사합니다.

1개의 좋아요

해당 경로를 "공유"로 변경했습니다. 다운로드 되는지 다시 한 번 확인 바랍니다.

1개의 좋아요

파일 경로만 드립니다.
파일 받으시면 권한 닫습니다.

1개의 좋아요

구글 계정 주시면, 더 좋습니다.
"모든 사용자"에게 권한을 주기가 좀 그렇습니다.

1개의 좋아요

안녕하세요 ^^
확인해보았습니다.
현재 오토메이션을 quit시 문제가 발생하는것 같습니다.
한글 2024에서만 이슈가 발생합니다.
한글 2024 오토메이션의 경우 인스턴스가 현재 1개만 생성이 가능한데 quit하고 모듈이 다 내려가기전에 새롭게 CreateDispatch를 하게 되면 한글 오브젝트가 생성이 불가능합니다.
그래서 오토메이션 오브젝트 생성에 실패하고 열기시 오류가 발생하는 상황입니다.
현재로썬 한글 2024에서 quit 이후 프로세스 생성시 quit 한이후 프로세스가 정상적으로 모두 종료된후에 생성하는 방법 밖에 없을것 같습니다.
감사합니다 ^^

1개의 좋아요

일단 구글 권한 닫습니다. 글은 더 읽어보고 다시 글 쓰겠습니다.

1개의 좋아요

어떻게 프로세스가 정상적으로 모두 종료되었는지 알 수 있나요?

1개의 좋아요

메시지큐를 받으면서 quit이후에 10초를 기다려도 문제가 해결되지 않습니다.

1개의 좋아요

quit
DoEvents(10000)// 10초 기다림.
CreateDispatch

이 순서로 진행하여도 문제는 동일합니다.

1개의 좋아요

안녕하세요 ^^
현재 2024 오토메이션에서는 생성과 종료, 그리고 또 생성을 하나의 프로세스에서 하시면 안될것 같다는 말밖에는 못드릴것 같습니다.
충분한 도움을 드리지 못해 죄송합니다.
감사합니다.

1개의 좋아요

[1] 제가 조금 더 확인을 해보았습니다.
"생성과 종료, 그리고 또 생성을 하나의 프로세스"에서 하면 안 된다고 하셨습니다.
제가 드린 샘플에서조차 처음 "생성과 종료"과 "또 생성"한 프로세스는 다른 프로세스입니다.
다른 변수이므로, 다른 프로세스라고 생각해도 될 것입니다.

[2] 처음 "생성과 종료"를 스킵하고 진행해도 문서가 제대로 안 열리는 문제가 있습니다.


원래 빈 문서가 아니고, 잘못 보이고 있는 것입니다.
첫번째 문제가 두번째 문제에 영향을 주고 있을 가능성이 있으므로, 두번째 내용은 참고로만 알고 계시면 될 것 같습니다.

추신 : 제가 무언가를 고쳐야하는지, 아니면 한글과 컴퓨터의 개선을 기다려야 하는지 애매모호합니다.
한글과 컴퓨터 내부에서도 아직 원인을 파악하지 못 하고 있다면, 어떤 문제라고 얘기하기보다는 기다려달라고 글을 적어주시기 바랍니다.
어떤 문제라고 얘기하시면, 맞는지 아닌지 제가 확인을 하기 때문입니다.

제가 확인을 해보고, 그 원인이 아니라고 글을 남기면, 그 글에 다시 답글을 적으셔야 하기 때문에,
둘 다 고생스러워지는 상황이 됩니다.

안녕하세요 ^^
해당 부분은 담당부서에 전달해두었습니다.
제가 더 도와드리고 싶었으나 제가 담당이 아니라 어려울것 같습니다.
감사합니다^^

현재 고객 지원 부서에서 확인하기 어려워서 개발 부서에 전달된 것은 이해를 하였습니다.
어떻게 진행되고 있는지만 확인 부탁드립니다. 감사합니다.

안녕하세요.

한글 오토메이션을 생성/종료를 반복하는 코드를 작성했습니다.
코드를 적용해보시고 이상이 있으면 코멘트 달아주세요.

(C++)
class CHwpAutomationTestDlg 
{
...
private:
	CHwpObject m_app;
}


BOOL CHwpAutomationTestDlg::ConnectHwp()
{
	TCHAR szError[_MAX_PATH] = { 0, };

	try {
		if (m_app.m_lpDispatch != NULL) {
			DisconnectHwp();
		}
		
		if (m_app.CreateDispatch(_T("HWPFrame.HwpObject.1")) != NULL) {
			CXHwpWindows wins = m_app.get_XHwpWindows();
			CXHwpWindow win = wins.get_Active_XHwpWindow();
			win.put_Visible(TRUE);

			return TRUE;
		}
	}
	catch (CException* e) {
		e->GetErrorMessage(szError, _MAX_PATH);
	}

	return FALSE;
}

BOOL CHwpAutomationTestDlg::DisconnectHwp()
{
	if (m_app.m_lpDispatch != NULL) {
		try {
			m_app.Quit();
		}
		catch (CException* e) {
			e->Delete();
		}
		m_app.ReleaseDispatch();
	}
	return TRUE;
}

// 생성/종료를 3회 반복하는 코드
void CHwpAutomationTestDlg::OnBnClickedButton1()
{
	int repeat = 3;

	for (int i = 0; i < repeat; i++) {
		ConnectHwp();
		DisconnectHwp();
	}
}

감사합니다.

제가 bhjung에게 오류가 발생하는 샘플을 전달했는데, 이 테스트를 하는게 어떤 의미가 있나요?

팀내에 정보 공유 부탁드립니다. 오류가 발생하는 샘플을 이미 전달드렸습니다.

안녕하세요 ^^
전달해주신 샘플을 확인후 생성/종료시 try/catch를 통해 안전하게 생성 및 종료를 하기위해 코드를 공유 드린것입니다.
개발팀에서 확인시 전달해주신 코드의 경우 현재 오토메이션 구조에 맞지 않게 프로젝트가 구성이 되어있다고 확인하였습니다.
기존 컨트롤을 이용하던 프로그램 같은데 컨트롤의 경우 여러개의 프로세스를 따로 관리가 가능하지만 오토메이션은 현재 여러개의 프로세스를 사용하기 어렵습니다.
그래서 오토메이션을 멤버로 가지고 있는 Class의 소멸자에서 오토메이션의 연결을 삭제하는 방식으로 되어있는데 해당 Class가 하나가 종료되기전에 다른 Class가 생성이 되어지고 다른 Class가 종료되었을때 오토메이션은 하나의 프로세스이기 때문에 두개의 Class가 같은 오토메이션을 보고있고 그렇기 떄문에 서버응답이 없다고 나타나는 것입니다.
오토메이션이 떠있을때 또 Craete를 해도 새로운 프로세스가 생성되는게 아니라 기존 프로세스에 연결됩니다.
전달 주신 HwpOleCtrlInDep.cpp의 소멸자의 DestroyHwpCtrl을 호출하지 않게 하면 오류가 발생하지 않을것입니다.
현재 전달 주신 프로젝트에서 오토메이션 방식은 사용이 어려울것 같고 싱글턴 방식으로 하나의 오토메이션 객체를 생성하여 사용해야할것 같습니다.
감사합니다.

2개의 좋아요

내용을 읽어보니, 오토메이션으로는 두개 이상의 프로세스를 띄울 수 없다는 의미로 보입니다.
현재 저희 프로그램은 두개 이상의 프로세스를 띄울 수 있다는 가정에서 구현이 되었습니다.
저희도 내부 회의를 해보고, 다시 글 드리겠습니다.

오토메이션이 한글 오피스 2018, 2020, 2022에서는 여러 프로세스가 뜰 수 있게 되어있었는데, 2024에서 갑자기 여러 프로세스를 처리할 수 없게 변경된 이유가 뭔가요?