레이블이 Useful인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Useful인 게시물을 표시합니다. 모든 게시물 표시

2016. 2. 26.

초간단 스크립트 메모장

웹서핑등을 하다보면 복사해서 붙여넣거나 메모할 내용이 생깁니다.
이럴때 어떤창보다도 항상 위에 윈도우메모장을 실행시킬 수 있다면 편리하겠죠.

물론 이런 용도로 나와있는 기성 프로그램도 있지만, 간단하게 직접 만들어서 써보자구요^^

초간단하게는 다음의 스크립트로 충분하겠죠

Run, Notepad.exe
WinWaitActive,ahk_class Notepad
WinSet, AlwaysOnTop, On, ahk_class Notepad
ExitApp


조금 멋을 부려서, 메모장 위치를 조정하고...기타 등등 포함해서.

#NoTrayIcon

wtitle=제목 없음 - 메모장
SetFormat, integer, d

settitlematchmode, 3
IfWinExist , %wtitle%
exitapp

Run, Notepad.exe,,hide
DetectHiddenWindows, On
settitlematchmode, 3
WinWait, %wtitle%
pox := A_ScreenWidth - 310
hei := A_ScreenHeight
envdiv, hei, 5

settitlematchmode, 3
WinMove,%wtitle%,,%pox%,20, 310,%hei%
settitlematchmode, 3
WinShow, %wtitle%
settitlematchmode, 3
WinActivate ,%wtitle%
settitlematchmode, 3
winset, alwaysontop, on,%wtitle%
exitapp


스크립트를 콤파일해서 실행파일로 만들고,
바로가기 아이콘 생성후 바로가기 속성에서 윈도우 단축키를 지정해 놓으시면
단축키로 바로 열리는 메모장~


------------------------------------------------------------------------------------------------------
[출처 : http://autohotkey.co.kr/b/1-4 ImMBR님 공유 스크립트와 설명댓글]
------------------------------------------------------------------------------------------------------



=== 추가 1 ===

SetTitleMatchMode명령어는 윈도우 타이틀바에 표시되는 이름을 찾거나, 비교할때의 기준을 정하는 명령어입니다.
위에 사용된 WinWait, WinMove등의 명령어에서 \'제목 없음 - 메모장\'이랑 관련된...
SetTitleMatchMode, 2 로 정해놓으면 윈도우 타이틀에 지정한 내용이 포함만 되어있어도 됩니다.
SetTitleMatchMode, 3 에서는 윈도우 타이틀이 지정한 제목과 정확하게 일치해야 합니다.
반드시 있어야 되는 명령어는 아니지만, 혹시 있을지도 모르는 스크립트의 오작동을 막기위해서...

제가 알기로는 ahk관련 책은 없는 것으로... 정말 한 권쯤 나와주면 좋겠는데 말입니다.

저같은 경우에는 그냥 도움말 파일이랑 www.autohotkey.com 포럼을 뒤져가면서 조금씩 얻어들었습니다.





=== 추가 2 ===

Run, Notepad.exe ; 노트패드를 실행시킨다.
WinWaitActive,ahk_class Notepad : 노트패드 창이 열리기를 기다린다.
WinSet, AlwaysOnTop, On, ahk_class Notepad : 노트패드 창을 최상위모드로 설정한다.
ExitApp : 스크립트 종료

위에도 말씀드렸지만 이 4줄의 스크립트로도 충분합니다.

길게 써놓은 스크립트는 제가 잘 모르고 만든 것이라 쓸모없는 내용이 많이 포함되어 있습니다.

설명드리자면
노트패드를 화면에 보이지 않게 실행시키고 메모장을 이동시킬 위치와 크기를 계산하고
보이지 않는 메모장을 계산한 위치로 옮긴 후에 창을 보이도록 만들어 준다~

필요없는 내용을 대폭 들어내면...

settitlematchmode, 3

Run, Notepad.exe
WinWait,제목 없음 - 메모장

WinMove,제목 없음 - 메모장,,700,20,310,200
winset, alwaysontop, on,제목 없음 - 메모장
exitapp

이상의 스크립트로도 충분합니다.





=== 추가 3 ===

wtitle=제목 없음 - 메모장
>> 변수 wtitle에 "제목 없음 - 메모장"이란 문자열을 저장

SetFormat, integer, d
>> 우선 ahk에는 변수지정 없습니다^^ 심지어 문자형, 숫자형 같은 변수도 구분안합니다.
변수는 딸랑 한 종류인데 ahk에서 알아서 용도에 맞게 사용합니다.
위 명령어의 뜻은 만약에 변수에 숫자가 저장될 경우 정수형, 10진수로 저장하라는 뜻인데,
사실, 위의 스크립트에 반드시 필요한 건 아니었는데 그냥 넣어놓은 겁니다;;;

settitlematchmode, 3
IfWinExist , %wtitle%
exitapp
>> 만약에 "제목 없음 - 메모장"이란 이름을 가진 윈도우가 열려있으면, 스크립트를 종료시킨다.

Run, Notepad.exe,,hide
>> 메모장을 보이지않게 hide모드로 실행
DetectHiddenWindows, On
>> 숨겨진 윈도우도 ahk에서 인식하도록 설정
settitlematchmode, 3
WinWait, %wtitle%
>> "제목 없음 - 메모장" 윈도우가 열리기를 기다린다.

pox := A_ScreenWidth - 310
>> 현재 화면 해상도 설정의 가로값(예 1024)에서 310을 빼준 값을 pox에 저장.
hei := A_ScreenHeight
>> 현재 화면의 세로값(예 768)을 hei에 저장
envdiv, hei, 5
>> hei값을 5로 나눠준 값을 다시 hei에 저장한다.

settitlematchmode, 3 
WinMove,%wtitle%,,%pox%,20, 310,%hei%
>> "제목 없음 - 메모장" 윈도우를 이동시키고 크기를 변경합니다. (위에서 계산한 좌표값으로)
화면의 오른쪽에서 310 픽셀 위에서 20 떨어진 곳으로 이동시키면서
윈도우 크기를 가로 310, 높이는 (화면 세로크기의 5분의 1로) 변경합니다.

settitlematchmode, 3
WinShow, %wtitle%
>> hide모드로 실행된 "제목 없음 - 메모장" 윈도우를 보이게 만듭니다.

settitlematchmode, 3
WinActivate ,%wtitle%
>> "제목 없음 - 메모장" 윈도우를 활성화 시킵니다.

settitlematchmode, 3
winset, alwaysontop, on,%wtitle%
>> "제목 없음 - 메모장" 윈도우를 항상 최상위에 있도록 설정합니다.

exitapp
>> 스크립트 종료