현재 커서 위치가 페이지의 맨 위인지 알 수 있을까요?

안녕하세요?

웹기안기에서 현재 커서 위치가 페이지의 시작위치인지 아닌지 알수 있는 방법이 있을까요?

감사합니다.

어떤 목적으로 이런 기능을 구현하려고 하시는지 궁금합니다.
몇 가지 액션을 조합하면 구현이 가능합니다.

① 현재 위치를 저장한다. (GetPos)
② 현재 페이지번호를 파악 후(KeyIndicator 또는 문서에 따라 XHwpDocuments.Active_XHwpDocument.XHwpDocumentInfo.CurrentPage나 CurrentPrintPage)
③ Goto 액션으로 현재 페이지번호로 이동한다.
④ 처음에 저장한 위치와 현재 캐럿위치가 일치하면 True, 일치하지 않으면 False를 리턴하게 한다.
⑤ 처음에 저장한 위치로 돌아가기(SetPos)

웹한글기안기는 아니지만ㅜ
파이썬의 오토메이션API 기준으로 코드를 보여드려보면,
녹화_2024_08_26_01_52_04_723

def is_pagestart():
    init_pos = hwp.GetPos()  # ①
    
    cur_page = hwp.XHwpDocuments.Active_XHwpDocument.XHwpDocumentInfo.CurrentPrintPage  # ②
    
    pset = hwp.HParameterSet.HGotoE  # ③
    hwp.HAction.GetDefault("Goto", pset.HSet)
    pset.HSet.SetItem("DialogResult", cur_page)
    pset.SetSelectionIndex = 1
    hwp.HAction.Execute("Goto", pset.HSet)
    
    try:  # ④
        if hwp.GetPos() == init_pos:
            return True
        else:
            return False
    finally:  # ⑤
        hwp.SetPos(*init_pos)

도움이 되었으면 좋겠습니다.

문서 자동 생성중에 페이지가 바뀌면 머리글을 다르게 해줘야 하는 경우가 있어서 여쭤봤습니다.

breaksection을 해야하는 타이밍을 잡기가 애매하더군요

안녕하세요.

“MovePageBegin” 액션을 실행하면 페이지 시작으로 이동이 가능합니다.
이동 후 GetPos() 함수로 위치를 얻어와서 비교를 하면 될것 같습니다.

var pos1 = HwpCtrl.GetPos();
HwpCtrl.Run("MovePageBegin");
var pos2 = HwpCtrl.GetPos();

if (pos1.list == pos2.list && pos1.para == pos2.para && pos1.pos == pos2.pos) {
    // 페이지 시작위치인 경우
} else {
    // 시작 위치가 아닌 경우
    HwpCtrl.SetPos(pos1.list, pos1.para, pos1.pos); // 위치 복구
}

아닛, 이렇게 간단한 방법이 있었군요!ㅋ