새 탭으로 문서 새로 작성한 후에 열려있는 탭 문서중 첫번째 탭 문서, 두번째 탭 문서 선택 하는 방법?

안녕하세요?

c# 으로 오토메이션 하고 있습니다.
항상 도움 많이 받고 있습니다. 감사합니다.
아래한글에서 새 탭 만들기 후에 문서 탭 선택 관련해서 문의 드리고자 합니다.

hwp.Run(“FileNewTab”)
을 사용해서 새 탭 문서를 생성했는데요
그러면 기존 탭 문서와 새로 만들어진 탭 문서가 있을텐데요
그리고 현재 문서는 새로 만들어진 탭 문서가 선택되어 있는 상태이고요

이 상황에서 첫번째 탭 문서를 선택하려면 어떻게 해야 할까요?
여러개의 탭 문서를 만들었을때 첫번째, 두번째… 탭 문서를 선택하는 방법을 알려주시면 감사하겠습니다.

감사합니다.

2개의 좋아요
hwp.XHwpDocuments.Item(n).SetActive_XHwpDocument()

메서드를 쓰시는 방법이 하나 있습니다.

녹화_2024_07_05_11_06_48_34

2개의 좋아요

안녕하세요.

XHwpWindows, XHwpTabs와 같은 UI 관점의 컨테이너로 아래와 같이 개체 접근이 가능합니다.

app(HwpObject)
    ㄴXHwpWindows        
        ㄴXHwpWindow
        ㄴXHwpWindow
           ㄴXHwpTabs
              ㄴXHwpTab
              ㄴ ...

CXHwpWindows wins = hwp.get_XHwpWindows();
CXHwpWindow win = wins.get_Active_XHwpWindow();
CXHwpTabs tabs = win.get_XHwpTabs();
CXHwpTab tab = tab.get_Item(n)

그런데 tab에서 제공하는 인터페이스가 Close() 밖에 없어서 컨트롤할 수 동작은 제한적이네요 :sob:

XHwpDocuments는 app의 로지컬한 문서를 관리하는 컨테이너이고
새 창, 새 탭에 구분없이 문서를 접근할 수 있습니다.

app(HwpObject)
    ㄴXHwpDocuments
          ㄴXHwpDocument
          ㄴXHwpDocument
          ㄴ...

그래서 nuristar님이 개발하고자 하는 동작이 문서탭 형식으로만 문서를 생성해서 컨트롤하고자 한다면
user16의 답변처럼 사용하셔도 의도된 동작을 개발하실 수 있습니다.

감사합니다.

3개의 좋아요

감사합니다… 한방에 해결됐습니다 ^^;;

알려주신
hwp.XHwpDocuments.Item(n).SetActive_XHwpDocument()

이걸로 했습니다.

한컴에서 알려주신 내용도 참고하겠습니다.
감사합니다.

3개의 좋아요

한컴에서 말씀해주신 대로,
경미한 문제점이 몇 가지 있기는 합니다.
그때그때 잘 디버깅하시리라 믿지만,
가장 치명적인 문제는
1번 아이템을 활성화 해 둔 상태에서
2번 아이템에 Close를 실행해도
실제로는 활성화되어있는 1번 아이템(XHwpDocument)이 닫힌다는 점입니다.

언급하지 않은 부차적인 모든 문제도 이와 유사합니다.

이 점 유의하여 사용하시길 바랍니다^^

3개의 좋아요

헉… 그런문제점도 있었군요
참고하겠습니다…
소중한 조언. 감사합니다.

2개의 좋아요

알려주신 CXHWPWindows 를 사용해볼려고 했는데… 정확한 사용법을 몰라서요

아래한글 관련 선언문이나 변수는

using HwpObjectLib; // 처음 선언문에서 입력

HwpObject hwp = new HwpObject(); // 폼 안에서 변수 선언

이렇게 두가지만 설정한 상태인데
뭔가 더 준비를 해 주어야 하는게 있을까요?

CXHwpWindows wins = hwp.get_XHwpWindows();
CXHwpWindow win = wins.get_Active_XHwpWindow();
CXHwpTabs tabs = win.get_XHwpTabs();
CXHwpTab tab = tab.get_Item(n)

알려주신 코드로 새 창, 새 탭에 접근해볼려고 하는데
CXHwpWindows wins = hwp.get_XHwpWindows(); ← 여기부터 에러가 나네요…ㅠㅠ

2개의 좋아요

위에 코멘트한 코드는 C++ 예제입니다.
C#에는 Property 개념이 있어서 아래와 같이 작성해야 합니다.

IXHwpWindows wins = hwp.XHwpWindows;
IXHwpWindow win = wins.get_Active_XHwpWindow();
IXHwpTabs tabs = win.XHwpTabs;
IXHwpTab tab = tabs.Item[n];

감사합니다.

2개의 좋아요