오토핫키 GUI 검색창

오토핫키로 단축키 설정 뿐만 아니라

GUI도 만들 수 있습니다.

 

HotKey(단축키)와 HotString(단축문자열)도

좋지만 GUI에 익숙한 사람도 많기 때문에

충분히 사용해볼만 합니다.

 

약간의 프로그래밍이 들어가야 하는데

간단한 GUI의 경우 파이썬 기초 정도의

수준이니까 어렵지 않습니다.

 

이번 포스팅의 예제는 아래와 같이 생긴

GUI 검색창을 구현하는 방법을 알아봅니다.

 

오토핫키 GUI 인터넷 검색

 

텍스트 입력창에 있는 내용을 구글, 유튜브,

네이버 등 검색엔진에서 바로 검색하는

스크립트가 실행됩니다. 웹브라우저를 띄운다움

URL 쿼리를 보내는 일이니까 다른 여러

검색엔진에도 사용할 수 있습니다.

 

오토핫키 GUI는 윈도우를 관리하는 커스텀

컨트롤 패널 처럼 사용할 수도 있기 때문에

여러가지 사무자동화에도 응용할 수 있습니다.

 

오토핫키의 설치는 아래 문서를 참고합니다.

 

Autohotkey 시작하기 / 설치 (SciTE 에디터) - Autohotkey 가이드 1

GUI 시작하기

 

다음의 코드는 GUI 창을 만듭니다.

 

#SingleInstance, Force

Gui, Show, x700 y700 w400 h300, GUI 프로그램
return

 

#SingleInstance, Force는 하나의 인스턴스

(윈도우)를 여러개 생성하지 않도록

하기 위해서 입니다. 이것을 설정안하면

스크립트를 실행할 때 마다 계속

물어보는게 귀찮아서 넣었습니다.

 

중요한 건 Gui, Show 부분입니다.

xN yN은 현재 스크린(바탕화면)에서

왼쪽위 끝이 0, 0에서 오른쪽 아래 좌표

(해상도 크기)로 얼만큼 이동했는가를

픽셀로 표시한 위치입니다.

 

쉽게말해 x는 오른쪽 이동 y는 아래쪽 이동

으로 테스트하면 쉽게 알수 있습니다.

w는 width 너비 이고 h 는 height 높이 입니다.

윈도우창의 위치와 크기를 조작할 수 있습니다.

 

Gui 프로그램은 창의 타이틀입니다.

 

이게 기본 창이고 이 안에 GUI 컨트롤들을

채워넣으면 됩니다.

 

텍스트를 넣어 보겠습니다.

Gui, Add, Text, x50 y50, HelloWorld
Gui, Show, x700 y700 w400 h300, GUI 프로그램
return

코드를 보면 상당히 직관적입니다.

Gui에 Text를 Add한다. x좌표 50 y좌표 50이다.

내용은 HelloWorld 이다.

 

x50 y50 이것들은 옵션인데 오토핫키 스크립트는

상당히 많은 옵션을 설정할 수 있습니다.

 

세밀한 옵션의 사용법은 AutoHotkey의

공식 문서에 들어가서 Search 를 참조합니다.

 

Beginner Tutorial | AutoHotkey

Button

오토핫키도 윈도우의 기본 GUI 요소들을

사용할 수 있기 때문에 편리합니다.

 

다음은 버튼을 추가합니다.

Gui, Add, Button, , 클릭

Button 다음의 , , 에는 옵션이 들어갑니다.

 

GUI컨트롤들은 대체로 비슷한 옵션입니다.

일단 위치와 크기인 xN yN wN hN이 들어가고

그 다음에 중요한게 서브루틴입니다.

 

오토핫키는 옵션에 서브루틴을 명시하는데

잘 보면 웹프로그래밍에서 HTML태그 속성에다

자바스크립트 함수를 연결시키는 것과 비슷합니다.

 

Gui, Add, Button, w100 h50 gClickMe, 클릭

; 서브루틴을 추가한다
ClickMe:
	MsgBox, 클릭했습니다!
	return

오토핫키 GUI

서브루틴은 프로그램 제어방법인데

여기서는 버튼이 클릭했을 때의

동작이라고 보면 됩니다

 

서브루틴을 레이블(Label)이라고도 하는데

윈도우의 컨트롤인 그 Label이 아니라

코드의 위치를 말하는 Label입니다.

Label이라고 이름지은 센스는 원래

어셈블리어에서 사용되는건데

좀 고인물 스러운 부분입니다.

보통 현대 GUI에서는 Label을

짧은 텍스트를 말하는데 여기서는

서브루틴(subroutine)입니다.

 

MsgBox는 메시지 윈도우입니다.

서브루틴은 return 으로 끝내야 하는데

return 이 없으면 return 을 만날때까지

그 다음 라인의 명령어도 그냥 실행해버립니다. 

 

텍스트를 입력하는 창은 다음과 같습니다.

 

Gui, Add, Edit, w200,텍스트 입력창

오토핫키 GUI

 

이제 텍스트 입력창의 내용을 변수로

저장해서 버튼 클릭시 출력하는 방법입니다.

 

#SingleInstance, Force

Gui, Add, Text, x50 y50, HelloWorld
Gui, Add, Edit, w200 vMyText,텍스트 입력창
Gui, Add, Button, w100 h50 gClickMe, 클릭
Gui, Show, x700 y700 w400 h300, GUI 프로그램
return

ClickMe:
	gui, submit, nohide
	MsgBox, 클릭한 변수: %MyText%
	return

 

오토핫키 GUI

옵션에 v로 시작하는 것은 변수입니다.

변수를 사용하는 방법은 %변수이름%으로

서브루틴에 추가할 수 있습니다.

이때 submit을 하는 이유는 submit 전에는

텍스트 입력창의 내용을 변수로 저장하지

않습니다. submit이 된 후에야 그 내용들이

여기서는 MyText라는 변수에 저장됩니다.

 

검색창 스크립트

위의 기본적인 내용을 이해했다면

아래의 소스코드처럼 구현할 수 있습니다.

 

텍스트입력창, 버튼, 변수, 서브루틴을

조합하여 GUI창을 만듭니다.

 

세부적인 내용은 AutoHotkey 공식문서

레퍼런스로 사용해서 구현합니다.

 

SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Reload시 팝업창이 안나오게함
#SingleInstance, Force

; AHK GUI
; sub-commands : add, show, submit
; object : edit, button
; basic gui script
; vSearchKeyword -> %SearchKeyword% it is a variable

; GoogleSearch meaning execute subroutine GoogleSearch

; vVariable: %Variable% 변수로 사용한다
; gLabel: Label이라는 subroutine (함수같은 것)
; Label -> 텍스트의 그 Label이 아니라 서브루틴을 의미

; font 설정 안하면 default
Gui, Font, s11 cF9F1D6, 맑은 고딕

Gui, Add, Text, x20 y20 , 웹에서 검색
Gui, Add, Edit, r2 y+15 w280 cBlack vSearchKeyword, 비트코인
Gui, Add, Button, x20 y+20 Default gGoogleSearch, 구글
Gui, Add, Button, x+10 Default gYoutubeSearch, 유튜브
Gui, Add, Button, x+10 Default gNaverSearch, 네이버
Gui, Add, Button, x+10 Default gSearchAll, 모두 검색

; +AlwaysOnTop -> 최상단
; -AlwaysOnTop -> 가려짐
Gui, +AlwaysOnTop
; hex color
Gui, Color, 2170E4


; w200 -> width 200px h200 -> height 200px
; x300 y300 -> 좌표를 의미 스크린 좌측 상단에서 x가 300px, y가 300px
Gui, Show, x800 y700 w330 h200, GUI 검색창

; 트레이 아이콘에 추가하기
Menu, Tray, Add, 인터넷 검색하기, SearchShow
return


; <-- ahk basic control HotKey -->

; reload script
^r::Reload

; edit script
^e::Edit

; exit out
^q::ExitApp


; <-- Gui Instance Control -->

; tp show GUI
; Ctrl + Shift + s
; GuiClose를 사용하지 않을 경우
; ^+s::Gui, Show

; remove Gui from memory
; Ctrl + Shift + d
^+d::Gui, Destroy

SearchShow:
Gui, Show
return

; sub routine for google, youtube, naver etc.
; Nohide - after submit Gui stays
GoogleSearch:
 Gui, Submit, Nohide
 Run, https://www.google.com/search?q=%SearchKeyword%
 return

YoutubeSearch:
 Gui, Submit, Nohide
 Run, https://www.youtube.com/results?search_query=%SearchKeyword%
 return
 
NaverSearch:
 Gui, Submit, Nohide
 Run, https://search.naver.com/search.naver?query=%SearchKeyword%
 return
 
SearchAll:
 gosub, GoogleSearch
 gosub, YoutubeSearch
 gosub, NaverSearch
 return

; 서브루틴에 단축키 지정이 가능하다
^+a::
 gosub, SearchAll
 return

; 종료버튼 x 를 클릭시 실행
GuiClose:
 ExitApp
 return

 

자주 사용하는 검색 키워드를

기본값으로 설정해놓으면 편리합니다

 

GUI는 하나씩 컨트롤을 추가해나가면

복잡한 것도 만들 수 있지만

처음부터 너무 복잡하게 만들려고 하면

생각보다 잘 진도가 안나갑니다.

 

오토핫키 GUI관련 포스팅을 몇개 더

추가할 생각인데 일단 요령을 알면

자꾸 간단한 것 부터 만들어 보는 것이

도움이 됩니다. GUI라는게 우리의 상상을

잘 벗어나지 않기 때문에 언어마다

코드가 달라도 하는 일은 다 비슷합니다.

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band