38 - [오토핫키] GUI Hotkey

    GUI는 배포할때 굉장히 유용하다고 말씀 드렸죠? GUI를 사용하므로써 핫키를 사용하지 않을 수는 있지만 매번 GUI를 마우스로 클릭하는것 보다 핫키를 사용하는것이 훨씬 편리합니다. 하지만 프로그램을 배포 했을 경우 사용자가 이미 사용하던 핫키가 있다면 키가 겹치게 되겠죠? GUI Hotkey는 사용자가 직접 핫키를 지정하여 사용하도록 해주는 매우 편리한 기능입니다. 단, GUI Hotkey는 대부분 Hotkey명령어와 함께 사용합니다.

     

     

    문법

    Gui, Add, Hotkey [, Options, Text]

     

    설명

    Add

    콘트롤을 GUI에 추가합니다.

    Hotkey

    사용자가 누른 키 조합을 받는 박스

    Options

    위치, 크기, 라벨 등을 설정

    W : 픽셀 단위 너비

    H : 픽셀 단위 높이

    X : X축 위치

    Y : Y축 위치

    Text

    기본 키 조합

     

    문법

    Hotkey, KeyName [, Label, Options]

    Hotkey, IfWinActive/Exist [, WinTitle, WinText]

    Hotkey, If [, Expression]

     

    설명

    KeyName

    활성화된 핫키를 지정합니다.

    Label

    KeyName에 입력된 핫키가 눌렸을때 실행될 라벨의 이름, 혹은 핫키의 이름.

    Options

    UseErrorLevel : 명령어의 문제를 만나면 경고창을 무시하고 진행.

    On : 핫키를 켬.

    Off : 핫키를 끔.

    B 또는 B0 : #MaxThreadsBuffer를 기준으로 버퍼 처리함.

    Pn : 핫키 쓰레드의 우선 순위

    Tn : 허용할 쓰레드의 개수

    IfWinActive/Exist

    이 후 생성되는 핫키들이 제목 창에 반응하도록 함

    WinTitle

    창의 제목이나 클래스 등 창을 나타내는 기준. 22 - [오토핫키] WinTitle 종류 참조

    WinText

    창의 텍스트 부분

    If, Expression

    표현식을 사용하여 핫키를 만들 수 있습니다.

     

     

    예제

    예제1)

    Gui, Add, Hotkey, vHot1, F1

    Gui, Add, Hotkey, vHot2, F2

    Gui, Add, Button, gBtn, 적용

    Gui, Show

    Return

     

    Btn:

    Gui, Submit, Nohide

    Hotkey, %Hot1%, Hot1

    Hotkey, %hot2%, Hot2

    Return

     

    Hot1:

    MsgBox, 첫번째 핫키

    Return

     

    Hot2:

    MsgBox, 두번째 핫키

    Return

    예제2)

    Gui, Add, Hotkey, vHot, F1

    Gui, Add, Button, gBtn, 적용

    Gui, Show

    Enable=on

    Return

     

    Btn:

    Gui, Submit, Nohide

    If Enable=on

    {

      Enable=off

      GuiControl, Disabled, Hot

      Hotkey, %Hot%, Hot, on

    }

    Else

    {

      Enable=on

      GuiControl, Enabled, Hot

      Hotkey, %Hot%, Hot, off

    }

    Return

     

    Hot:

    MsgBox, 핫키 실행!!

    Return

     

    예제1을 볼까요? Gui Hotkey는 단순히 핫키를 받아주기만 합니다. 그렇기 때문에 Hotkey라는 명령어를 이용하여 Gui에서 받아온 핫키를 적용시킵니다. 여러가지 핫키들을 바꿔가며 테스트 해보세요. 혹시 뭔가 이상한 점을 느끼셨나요?

    맞습니다. 핫키가 적용이 되긴하는데 적용한 핫키를 지워주지 않으면 여러개의 핫키가 생성되고 중복 핫키가 생기며 불편해지죠.

    예제2는 이러한 문제를 해결하기 위해 Gui Hotkey의 입력창을 활성화, 비활성화 합니다. 우선 입력 가능한 상황과 불가능한 상황을 주기 위해 Enable=on이라는  변수를 선언 했어요. 즉 입력 가능상태일때 Enable=off로 입력 불가능한 상태를 선언 해주고 GuiControl을 이용하여 입력창을 비활성화 시키고, 핫키를 적용시킵니다.

    다시 적용 버튼을 눌러주면 입력이 불가능한 상태이기 때문에 Else부분이 실행되며 핫키를 꺼줍니다.

     

     

     

     

     

    Posted by 옹봉이