본문 바로가기

한글매크로

(한글매크로) #3. 스크립트창에서 코드 분석하기

--------------------------------------------------------<필독!>----------------------------------------------------------

# 작업환경 : 한글버전 2020

# 매크로 실행시 오류가 있다면 한글 업데이트가 최신인지 꼭! 확인해주세요

# 스크립트 코드를 실행시 버전에 따라 작동오류가 생길 수 있습니다.

 

# 하위 버전 사용시 생기는 문제

- 일부 매크로 녹화가 되지 않는 경우가 생깁니다. (경험담)

- 제공되는 스크립트 코드가 읽히지 않는 경우가 있습니다. (경험담)

(단, hancom에서 지속적인 업데이트와 문제점을 해결해 왔다면 업데이트시 작동할 수도 있습니다.)

---------------------------------------------------------------------------------------------------------------------------

 

들어가기 전에 읽어주세요!

- 너무 이해하려고 애쓰지 마세요! 이해 하지 못해도 사용하는데 지장은 없습니다.

  녹화기능을 사용하면 자동으로 적히기 때문입니다.

- 어떤 구조로 되어 있는지 정도만 이해하고 이렇게 사용해야 매크로가 동작한다는 것만 알아두세요!

 

준비하기

지난 글에서 배운 녹화하기 기능으로 다음 순서로 녹화를 하면

녹화 순서) 상하좌우 방향키를 순서대로 누른 뒤 본문에 '안녕?' 이라고 글을 적은후 녹화 저장을 하였습니다.

스트립트창을 열면 다음과 같은 코드가 작성되었음을 알 수 있습니다.

[매크로 정의하기] : Alt + Shift + H 누르고 저장할 위치 클릭 후 정의버튼 누르기

[매크로 중지하기] : Alt + Shift + X

[스크립트창 띄우기] : Alt + Shift + L 을 누르고 난 뒤 Alt + C 누르기 

[그림1]

 

코드스타일1) HAcion.Run("액션");

[그림1]에서 ①번에 해당되는 부분을 가져와서 공통된 부분만 빨간색으로 표시를 하면 다음과 같습니다.

         HAction.Run("MoveUp");

         HAction.Run("MoveDown");
         HAction.Run("MoveLeft");
         HAction.Run("MoveRight");

 

HAction.Run("액션");

에서 "액션"에 들어가는 문구들에 대한 내용은 다음 포스팅 API 사용하기에서 다루도록 하겠습니다.

지금은 이런 패턴이 있구나 정도로 이해해주세요.

 

 

코드스타일2) HAction.GetDefault(); 와 HAction.Execute();

[그림1]에서 ②번에 해당되는 부분을 가져오고 이와 비슷한 녹화된 코드를 가져 오겠습니다.

역시 공통된 부분만 빨간색으로 표시를 하면 다음과 같습니다.

 

// "안녕?"이라는 글을 본문에 적을때 녹화되는 코드

HAction.GetDefault("InsertText, HParameterSet.HInsertText.HSet);

HParameterSet.HInsertText.Text = "안녕?";
HAction.Execute("InsertText", HParameterSet.HInsertText.HSet);

 

// 붙여넣기를 실행할때 녹화되는 코드

HAction.GetDefault("Paste", HParameterSet.HSelectionOpt.HSet);
with (HParameterSet.HSelectionOpt)
{
}
HAction.Execute("Paste", HParameterSet.HSelectionOpt.HSet);

 

// 글자모양을 실행할때 녹화되는 코드
HAction.GetDefault("CharShape", HParameterSet.HCharShape.HSet);
with (HParameterSet.HCharShape)
{
        FaceNameUser = "굴림체";
        FontTypeUser = FontType("TTF");
        FaceNameSymbol = "굴림체";
        FontTypeSymbol = FontType("TTF");
        FaceNameOther = "굴림체";
        FontTypeOther = FontType("TTF");
        FaceNameJapanese = "굴림체";
        FontTypeJapanese = FontType("TTF");
        FaceNameHanja = "굴림체";
        FontTypeHanja = FontType("TTF");
        FaceNameLatin = "굴림체";
        FontTypeLatin = FontType("TTF");
        FaceNameHangul = "굴림체";
        FontTypeHangul = FontType("TTF");
}
HAction.Execute("CharShape", HParameterSet.HCharShape.HSet);

 

HAction.GetDefault(); 와 HAction.Execute(); 는 무조건 셋트로 움직입니다.

어느 하나가 결핍되면 오류를 발생시킵니다. 또한, 

코드를 수정하는 단계에 이르면 다음을 주의해야합니다.

        HAction.GetDefault();

        HAction.GetDefault();

        HAction.Execute();

        HAction.Execute();

와 같이 이중구조로 사용이 불가능합니다. 

        HAction.GetDefault();

        HAction.Execute();

와 같이 HAction.GetDefault();가 실행이 되고 HAction.Execute();실행이 끝난 뒤에 다시 

HAction.GetDefault();가 올 수 있습니다.(참고문헌 한글 API)

 

코드스타일3) 기호 ; (세미콜론)

눈치 채셨을지 모르겠지만

코드스타일1), 코드스타일2)에서 공통된 특징이 하나 있습니다.

코드 마지막 부분에 기호 ;(세미콜론)이 붙여있습니다. ([그림1] 참고)

[세미콜론을 붙여주는 이유]

컴퓨터가 코드의 마지막이 어디인지 알리기 위함입니다.

마지막이 정해져 있다는걸 알았다면 컴퓨터가 그 이후 코드를 해석하는데 불필요한 시간 낭비를 막을 수 있습니다.

붙이지 않아도 실행이 되는 경우가 있지만, 오류로 실행이 되지 않는 경우도 있으니 꼭 붙이는 습관을 들여주세요.

[그림1]

 

다음에 글에서는 녹화된 스크립트를 직접 수정해 보도록 하겠습니다.

---------------------------------------------------------------------------------------------------------------------------

궁금한 점이 있거나 매크로 문의는 오픈카톡으로 오시면 친절히 답해드리겠습니다.

(한글단축키, 한글에 대한 오류 해결, 매크로 제작문의, 매크로 궁금한 점 문의)

오픈카톡주소

단체톡  https://open.kakao.com/o/gF5DTuZc

1:1문의 https://open.kakao.com/o/sfHk5I1c

---------------------------------------------------------------------------------------------------------------------------

 

!! 오타나 오류가 있다면 댓글로 알려주세요 !!