한글 오피스의 타이틀바 얻기

개발 환경은 MFC(Visual C++)입니다.
한글 오토메이션입니다.

타이틀바를 변경하는 것은 있는 것을 확인하였습니다.
(CHwpObject의 void SetTitleName(LPCTSTR Title)함수)
하지만 타이틀바를 얻는 함수는 없습니다. (GetTitleName)
그동안은 지원을 안 한다고 생각하고 구현을 하였는데 아무리 생각해도 의아하기도 하고,
구현을 위해서 필요한 경우가 있어서 여쭈어 봅니다.

1개의 좋아요

안녕하세요,
이력을 찾아보니 해당 API는 외부 업체와 업무 진행하며 추가된 API입니다 ^^
특정 상황에만 사용되는 API여서 가이드 문서에는 작성하지 않은것 같습니다.
아쉽게 타이틀을 얻어오는 API는 없는것으로 확인했습니다.
현재로는 프로그램의 핸들을 가져와 win32의 GetWindowText API를 이용하여 타이틀을 얻는수 밖에 없을것 같습니다.
감사합니다.

1개의 좋아요

CHwpObject클래스가 CWnd을 상속받은 것이 아니고, COleDispatchDriver을 상속받았기 때문에
GetWindowText API을 사용해서 타이틀바를 얻을 수가 없습니다.

그리고 제가 GetTitleName함수의 필요성을 느낀 이유는 SetTitleName함수를 호출하자자마 타이틀바가 바뀌는 것이 아닌 것으로 보입니다.
쓰레드로 처리된 것으로 보이고 완료되는데 1~4초 정도의 시간이 걸리는 것으로 보입니다.
그래서 ::FindWindow로 CHwpObject를 찾으면 바로 찾지 못합니다.
그래서 HWP AUTOMATION을 사용하는데 애로 사항이 있습니다.

1개의 좋아요

참고로 GetTitleName함수가 있었다면 해당 어려움에 대해서 고민할 필요가 없습니다.
그래서 바로 함수를 만들어달라는 의미는 아닙니다.

1개의 좋아요

평소같으면 어떻게 처리하라고 답글이 왔을 텐데, 답글이 없는 걸 보니, 어쩔 수 없다는 입장이신거 같습니다.
일단 주어진 API내에서 처리하겠습니다. 감사합니다.

1개의 좋아요

다른 업무 처리하느라 확인이 늦었습니다.
프레임에선 바로 처리를 할텐데 윈도우 함수를 타면서 바로 적용이 되지 않는겉같습니다.
추후 API 추가에 있어서 건의해보겠습니다 ^^
항상 관심을 가져주셔서 감사합니다.

1개의 좋아요

의사 결정을 하기 위해서 정리를 하면
[1] 1~4초를 기다려야 FindWindow가 되기 때문에 제어하는 프로그램이 느려집니다.
[2] 간혹 4초도 넘어가는 경우가 있습니다. 그러면 비정상적으로 동작합니다.
그렇다고 FindWindow가 성공할 때까지 무한 대기할 수는 없으니까요.

항상 죄송하고 감사합니다.

1개의 좋아요

질문은 아니고 타이틀바를 얻는 함수(GetTitleName)가 필요한 중요한 이유가 생겨서 언급하려고 글 드립니다.
후킹을 사용할 때, 일반적으로 타이틀바를 기준으로 검색을 하는데 타이틀바를 읽을 수가 없어서 후킹을 처리하는데 애로 사항이 있습니다.
회사내에서 기능 개선 검토시 어필 부탁드립니다.
답글 주실 필요는 없습니다.
감사합니다.

1개의 좋아요