한글 오토메이션을 하여 문서를 생성하는데 히든상태로 ole 생성하여 문서를 열어야 하는데
ole 생성 성공하자마자 visible을 false로 설정하고 있지만 CreateDispatch 하는 타이밍에 한글 프로세스가 떠서 화면이 번쩍 뜹니다.
화면 번쩍임 없이 hidden 상태로 ole를 생성하여 처리할 수 있도록 가이드 부탁드립니다.
현재 코드는 아래와 같습니다.
CHwpObject* m_ctrlHwp = new CHwpObject();
BOOL bSuccessCreate = m_ctrlHwp->CreateDispatch(_T(“HWPFrame.HwpObject.1”));
if(bSuccessCreate)
{
CXHwpWindows pWindows = ctrlHwp->get_XHwpWindows();
CXHwpWindow pWindow = pWindows.get_Active_XHwpWindow();
pWindow.put_Visible(FALSE);
}
}
1개의 좋아요
안녕하세요
제 PC에서는 번쩍이는 현상이 재현 되지 않네요 ㅠㅠ
한글 몇 버전을 사용하시나요?
같은 방식이긴 한데 아래 코드도 재현 되는지 확인 부탁드립니다.
CLSID clsid;
CHwpObject* m_ctrlHwp = new CHwpObject();
HRESULT hr = CLSIDFromProgID(L"HWPFrame.HwpObject.1", &clsid);
if (SUCCEEDED(hr)) {
IDispatch* pDispatch = nullptr;
hr = CoCreateInstance(clsid, nullptr, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&pDispatch);
if (SUCCEEDED(hr)) {
m_ctrlHwp->AttachDispatch(pDispatch, true);
Sleep(5000);
m_ctrlHwp->Quit();
}
}
감사합니다.
1개의 좋아요
안녕하세요
알려주신 생성 방법으로 했는데 이상없이 되는 부분 확인했습니다.
근데 추가적으로 분석하다보니 hidden 상태로 ole를 생성하였는데 document에 add 하는 순간 한글프로그램이 화면에 나타납니다.
제가 하고자 하는 방향은 hidden 상태로 ole를 생성하고 도큐먼트를 추가하여 문서파일을 오픈 한 다음 화면에 뿌려주고 싶은데 혹시 방법이 있는지 추가적으로 여쭙고 싶습니다.
제공해주신 코드에 아래 두 줄 추가하여 테스트 진행하였습니다.
CXHwpDocuments docs= m_ctrlHwp->get_XHwpDocuments();
docs.Add(0); // 이부분에서 show가 되버립니다.
확인 부탁드리겠습니다.
1개의 좋아요
docs.Add(0); 는 새 창으로 열기인데 이렇게 하시는 이유가 있을까요?
새 창으로 띄우는거라 강제로 show가 됩니다.
docs.Add를 안하셔도 문서 편집은 가능합니다.
창을 숨겨서 처리를 하시려면 HwpObject를 하나 만드셔서 하는 방법이 있을 것 같습니다.
새 탭을 원하면 docs.Add(1);로 하시면 좋을 것 같습니다.
감사합니다.
1개의 좋아요