여러분들은 컴퓨터를 사용하면서 어떤 작업을 가장 많이 하시나요? 저는 개인적으로 생각하기에 복사 붙여넣기라고 생각을 합니다. 그래서 복사 붙여넣기를 잘 하는 것만으로도 컴퓨터 사용의 효율성은 분명히 올라간다고 생각합니다. 그래서 저는 아래 포스팅에서 소개를 했던 ditto 라는 복사 붙여넣기 툴과 Windows 10 에 들어있는 복사 붙여넣기 기능들을 적극적으로 사용하는 편입니다. 아래는 제가 지금까지 복사 붙여넣기와 관련된 포스팅을 한 것들인데 위에서 얘기했던 ditto 이외에도 Clipjump 와 같은 Autohotkey 로 만들어진 툴에 대해서도 소개를 하니 한번쯤 읽어 보시기 바랍니다.

https://iamaman.tistory.com/737

https://iamaman.tistory.com/2693

https://iamaman.tistory.com/1026

https://iamaman.tistory.com/948

https://iamaman.tistory.com/2566

오늘은 Autohotkey 를 사용하여 복사 붙여넣기를 하는 3 가지 방법에 대해서 소개를 하려고 합니다.

일단 Autohotkey 를 사용하는 대부분의 분들이 아시겠지만 send 명령을 사용하여 복사 붙여넣기를 할 수가 있습니다. 실험 결과로 부터 원하는 계산을 한 후에 결과를 메모장에 붙여넣기하는 경우 아래와 같이 단축키를 만들어서 메모장에 자동으로 붙여넣기 할 수가 있습니다.

1. send 명령을 사용하는 방법

#!v:: ; shortcut Win + Alt + v

WinActivate, 제목 없음 - 메모장 ahk_class Notepad,

Send, ^v{Enter}

return

위 단축키는 Win + Alt + v 를 눌렀을 때 “제목 없음 - 메모장” 타이틀을 가진 메모장 프로그램에 ctrl + v 를 누르고 Enter 를 눌러서 줄 바꿈을 해주는 단축키입니다. 보시는 바와 같이 굉장히 간단하게 메모장에 붙여넣기를 할 수가 있습니다.

2. controlsend 를 사용하는 방법

#!c:: ; shortcut Win + Alt + c

ControlSend, Edit1, %Clipboard%`n, 제목 없음 - 메모장 ahk_class Notepad,

return

위 단축키는 Win + Alt + c 를 눌렀을 때 “제목 없음 - 메모장” 타이틀을 가진 메모장 프로그램의 Edit1 Control 에 클립보드의 내용과 줄바꿈을 넣는 단축키입니다.

3. PostMessage / SendMessage를 사용하는 방법

#!p:: ; shortcut Win + Alt + p

postmessage, 0x302, 1, 0, Edit1, 제목 없음 - 메모장 ahk_class Notepad,

return

마지막으로 설명드릴 내용은 PostMessage / SendMessage 를 사용하는 방법입니다. 윈도우 메시지를 전달하는 방법인데 위에서 소개했던 ControlSend 명령이나 PostMessage / SendMessage 명령은 비활성창에도 명령을 실행시킬 수 있기 때문에 send 명령보다 조금 더 편리할 수 있습니다. 하지만 그만큼 조금 더 공부할 거리들이 있는 것은 사실입니다. 어쨌든 위에서 소개한 스크립트는 Win + Alt + p 단축키를 누르면 마찬가지로 클립보드의 내용을 메모장에 붙여넣기하는 스크립트입니다.

추가로 PostMessage / SendMessage 를 사용하여 잘라내기와 복사하기를 하는 명령어는 아래와 같으니 참조하시기 바랍니다.

잘라내기 : postmessage, 0x300, 1, 0, Edit1, 제목 없음 - 메모장

복사 : postmessage, 0x301, 1, 0, Edit1, 제목 없음 - 메모장

오늘은 Autohotkey 를 사용하여 복사 / 붙여넣기를 하는 세 가지 방법에 대해서 소개를 했습니다. 서두에서 말씀드린 바와 같이 복사 / 붙여넣기만 잘 해도 정말 큰 업무 효율 향상을 볼 수가 있다고 생각합니다. 요즘은 4차 산업 혁명 시대라고 합니다. 저는 개인적으로 4차 산업 혁명 시대에는 극단적 효율성 향상의 시대이기 때문에 그 어느 때보다 효율성이 중요시 되는 시대라고 생각합니다. Autohotkey 와 함께 Windows PC 사용의 극단적 효율성 향상을 맛 보시기 바랍니다.

그리고 마지막으로 제가 최근에 찾은 블로그 중 아래 포스팅에서도 소개를 했던~

https://iamaman.tistory.com/2021

아래 블로그에도 한번 방문해 보시기 바랍니다. Autohotkey 구루라고 하시는데~ 정말 좋은 코드들을 많이 볼 수가 있고~

http://the-automator.com/

요즘에는 유튜브에서 방송도 하시더군요. Autohotkey 에 관심 있으신 분들은 Joe Glines 님의 유튜브 채널도 한번 구독해 보시기 바랍니다. 세계의 다양한 Autohotkey 유저분들과 인터뷰 도 하는데 배울 점이 많이 있는 것 같습니다.

https://www.youtube.com/channel/UCR0Hs-Bgz1SgGCq_0kbzjjg

저도 Autohotkey 는 어느 정도 사용한다고 생각을 했었는데~ 정말 세상에는 많은 실력자들이 있는 거 같네요. 지금보다 더 열심히 공부해 봐야 되겠습니다.

그럼 즐거운 Autohotkey 코딩하시고~ 굿 밤 되시기 바랍니다 ^^



Autohotkey 를 사용하여 처음에는 현재 활성화된 창에 대해서만 자동화를 주로 하지만 Autohotkey 에 어느 정도 익숙해지고 나면 비활성화 된 프로그램에 대해서 자동화를 하고 싶다는 생각이 들곤 합니다.

이런 목적으로 사용하는 Autohotkey 명령어는 ControlSend, ControlGet, ControlMove, PostMessage, SendMessage, ControlGetText 등이 있고 저는 주로 ControlSend 를 사용하여 비활성 창에 명령어를 던져 보고 ControlSend 로 되지 않는 경우 PostMessage/SendMessage 를 사용하곤 합니다.

PostMessage/SendMessage 명령어를 사용하기 위해서는 Windows 메시지를 알아야 되고 PostMessage/SendMessage 에 대한 사용법은 Autohotkey 메뉴얼을 보면 아래와 같이 튜토리얼도 확인할 수 있습니다.

https://autohotkey.com/docs/misc/SendMessage.htm

아래 페이지를 보니 한글로 된 자료도 있더군요. 사람이 번역을 한 건지 구글 번역과 같은 번역 프로그램을 사용한 건지는 잘 모르겠습니다. 영어가 부담스러운 분들은 한 번쯤 읽어보시기 바랍니다.

http://autohotkeykr.sourceforge.net/docs/misc/SendMessage.htm

어쨌든 위 튜토리얼에서는 Windows Spy 프로그램으로 Winspector Spy 를 알려주고 아래 주소에서 다운로드 받아서 사용할 수가 있습니다.

https://www.softpedia.com/get/Security/Security-Related/Winspector.shtml

뭐 정확하게 기억은 안 나지만 예전 경험으로는 Winspector Spy 를 사용하다가 뭔가 잘 안되서 사용을 안 하게 됐었는데~ 저는 요즘은 Winspector Spy 대신에 Window Detective 를 사용하고 있습니다. Window Detective 는 아래 주소에서 다운로드 받을 수 있고~ 설치 방법은 다운로드 받은 후에 실행 파일을 실행 하고 다음~ 다음만 누르면 되므로 굳이 설명 드리지 않겠습니다.

http://windowdetective.sourceforge.net/

오픈소스 프로그램을 검색하는 AlternativeTo 에서 Windows spy 프로그램들을 검색 해보니

Window Detective 가 조금 더 인기가 좋은 거 같아서~ 요즘은 Window Detective 를 주로 사용하게 되었습니다. AlternativeTo 는 유용한 프로그램들을 찾을 수 있는 굉장히 좋은 사이트로 AlternativeTo 에 대해 알고 싶은 분들은 아래 포스팅을 참조하시기 바랍니다.

https://iamaman.tistory.com/2123

Window Detective 를 설치한 후에 실행하면 아래와 같이 프로그램이 실행되는 것을 확인할 수 있고~ 특정 프로그램의 메시지를 확인하기 위해서는 “Pick window” 버튼을 드래그해서 메시지를 확인하고 싶은 창에 드랍하면 됩니다.

아래 그림은 PotPlayer 에 대해 Window Detective 를 사용하여 메시지를 확인하는 장면이고~ Window Detective 에서 오른쪽 클릭 한 후에 message 메뉴를 선택하면 PotPlayer 에 대한 메시지를 확인할 수 있게 됩니다.

아시다시피 윈도우 프로그램에는 정말 많은 메시지들이 있기 때문에 내가 원하는 메시지를 확인하는 것이 중요합니다. 위 그림에서 깔데기 모양을 선택하면 원하는 메시지들만 선택적으로 확인할 수 있습니다.

그럼 즐거운 Autohotkey 코딩 Life 되시기 바랍니다. ^^



Autohotkey 를 사용하여 영문 Send 를 할 때~ 한/영 자판의 상태에 따라 영문이 들어가기도 하고 한글이 들어가기도 합니다.

 

재수 좋게 영문으로 되어 있는 상태에서 send 를 한다면 정상적으로 동작하겠지만 한글로 된 상태에서 send 를 한다면 한글로 이상하게 들어가는 경우가 발생을 합니다.

 

예를 들어 아래 명령어를 메모장과 같은 에디터에서 한글 상태에서 실행한다면~ "며새ㅙ사됴" 로 나오게 될 겁니다.

 

Send, Autohotkey

 

Autohotkey 를 사용하여 한영 자판에 상태를 확인할 수 있는 방법을 검색 하다 보니 아래 주소에 그 해결 방법이 나오더군요.

 

http://www.autohotkey.co.kr/cgi/board.php?bo_table=qna&wr_id=20839

 

역시나 내가 생각하는 대부분의 문제들은 이미 누군가가 해결 해 놓은 경우가 많다는걸 다시 한번 느낍니다.

 

IME_CHECK(WinTitle)

{

    WinGet,hWnd,ID,%WinTitle%

    Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd),0x005,"")

}

 

Send_ImeControl(DefaultIMEWnd, wParam, lParam)

{

    DetectSave := A_DetectHiddenWindows       

    DetectHiddenWindows,ON                          

     SendMessage 0x283, wParam,lParam,,ahk_id %DefaultIMEWnd%

    if (DetectSave <> A_DetectHiddenWindows)

        DetectHiddenWindows,%DetectSave%

    return ErrorLevel

}

 

ImmGetDefaultIMEWnd(hWnd)

{

    return DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)

}

 

위 함수를 사용하여 현재 실행되는 프로그램의 한영상태를 확인하는 코드는 아래와 같습니다. 한글이면 1 영문이면 0이 나옵니다.

 

ret:=IME_CHECK("A") 

MsgBox % ret

 

위 함수를 사용하여 다음과 같이 한/영 상태에 따라 적절히 send 하는 명령어를 만들 수가 있습니다.

 

sendEng(textV)

{

    ret:=IME_CHECK("A") 

    If ret=1

    {

        Send, {vk15sc1F2}

    }    

    SendInput %textV%

    If ret=1

    {

        Send, {vk15sc1F2}

    }

}

 

한글 상태이면 영어로 바꿔 준 후에 send 를 하고 다시 한글 상태로 복귀 시킵니다.

 

다음과 같이 사용하시면 됩니다. 

sendEng("Autohotkey")


  1. 변영석 2018.12.01 14:54

    제일 아래의 sendEng(textV)예제에서
    sendinput %textV%
    다음 줄에
    ret:=IME_CHECK("A")
    이 다시 한번 와야 그 다음중
    if ret=1
    이 의미가 있을 것 같습니다.
    예를 들어서 영문 스트링을 넣고나서 한글 입력 상태로 바꾼다거나 하는 응용을 할 때에.

    • 남성 2018.12.02 12:13 신고

      음 그런가요? 영문을 넣고나서 기존에 한글이었으면 한글로 영문이었으면 영문으로 복귀하는건데 ..... 암튼 현재 저는 정상적으로 사용중인 코드입니다.

  2. ㅇㅇ 2019.03.26 11:47

    안녕하십니까. 한영전환 스크립트가 많은 도움이 되었는데 SetKeyDelay 딜레이를 늘려도 글자수가 늘어나면 글자를 자꾸 빼먹습니다.
    "테스트 입니다 안녕" 이렇게 보내면 "스트 다 녕" "테스트 다 녕" 이런식으로 채팅이 쳐집니다. 그래서 https://pastebin.com/raw/MCBNWH9M 처럼 한 글자씩 나눠서 치면 90% 완성되기는 하는데 느려서 쓰는 의미가 없구요.. 클립보드는 아예 한글이 깨져서 안됩니다. 좋은 방도가 있을까요?

    • 남성 2019.03.26 13:23 신고

      일단 클립보드에서 한글이 깨지는게 이상하네요. 어떤 Autohotkey 버전을 사용하는지 모르겠는데.... 저는 Autohotkey_L unicode 32 비트 버전을 사용중입니다.

  3. ㅇㅇ 2019.03.26 14:17

    아쉬운대로 한글자씩 쓰는 방법으로 최적의 시간을 찾아서 적용했습니다. 글 쓰신거는 정말 감사합니다. 많은 도움이 되었습니다.

윈도우 작업표시줄에는 시간이 나오는데

 

시간을 표시하거나 숨기는 방법이 있어서 소개하려 한다.

 

아래 주소에서 위에서 소개한 동작을 구현한 코드를 발결할 수 있었다.

 

http://www.autohotkey.com/board/topic/70770-win7-taskbar-clock-toggle/

 

코드는 다음과 같다.

 

#CapsLock::

ControlGet, hClock, Hwnd,, TrayClockWClass1, ahk_class Shell_TrayWnd

hShell := DllCall("GetAncestor", "UInt", hClock, "UInt", 2) ; GA_ROOT

 

while GetKeyState("LWin")

{

WinShow, ahk_id %hClock%

DllCall("SendMessage", "UInt", hShell, "UInt", 0x5, "UInt", 0, "UInt", 0x0)

}

WinHide, ahk_id %hClock%

DllCall("SendMessage", "UInt", hShell, "UInt", 0x5, "UInt", 0, "UInt", 0x0)

 

Return

 

Window + CapsLock 을 누르면 Trigger 가 되고 window 키가 눌러진 동안에 시간이 표시된다.

 

Window 버튼을 release 하면 다시 시간 표시가 숨겨진다.

 

    

오늘은 Autohotkey를 이용해서 간단하게 제어판을 다루는 방법에 대해 알아보겠습니다.

 

윈도우 운영체제의 컴퓨터를 사용 하다 보면 제어판을 건드려야 하는 경우가 종종 발생합니다.

 

한번만 설정하는 것이라면 상관없지만 제어판의 설정을 자주 바꿔줘야 한다면 이런 부분은 Autohotkey 를 이용해서 어느 정도는 자동화를 해놓으면 편리하게 설정 가능 합니다.

 

저는 윈도우 환경변수인 path 설정을 해야 하는 경우가 자주 발생하는데요.

 

이런 경우에도 Autohotkey 를 이용하여 그 접근을 용이하게 해서 사용하는 편입니다.

 

물론 윈도우의 path 설정은 set 이라는 명령어를 이용하여 한시적으로 설정할 수도 있고 Windows 7 같은 경우에는 setx 라는 명령어가 있어서 영구적으로 path 를 설정할 수도 있습니다.

 

오늘은 Autohotkey 를 이용해서는 환경변수 설정하는 데까지 들어가는 것을 자동화 하도록 어떻게 설정하는지를 말씀 드리겠습니다.

 

이전에 쓰던 XP 와 윈도우 7 은 시스템 속성의 UI 가 약간 다르더군요.

 

오늘은 윈도우 7을 기준으로 설명 드리겠습니다.

 

윈도우 7 의 시스템 속성 창은 아래 그림처럼 생겼습니다.

 

 

환경변수 창을 열기 위해서는 다음과 같은 과정을 거치죠.

 

1. 시스템 속성 창을 연다.


시스템 속성을 여는 명령어는 sysdm.cpl 입니다.

참조: 2011/09/16 - [컴퓨터일반] - 윈도우 제어판 확장 파일

위 명령어를 입력한 다음에는 컴터가 시스템 속성 창이 열릴 때까지 기다리게 해야 합니다.

 

2. 3번째 탭인 고급 탭을 클릭한다.

이때 시스템 속성 창의 각 버튼이나 각 탭 등이 어떤 건지 알려면 이전 포스팅에서 소개 드린 Active Window Info 라는 유틸을 쓰면 됩니다.

참조:  
2012/02/22 - [컴퓨터일반] - Autohotkey를 사용해 보아요~

클릭해야 하는 시스템 속성의 고급 탭 위에 마우스 커서를 올리면 Active Window Info 에 위 탭에 대한 정보가 아래 그림처럼 나오죠.

 

보시는 바와 같이 탭은 SysTabControl321 라는 것을 확인 할 수 있고, SysTabControl321 의 3번째인 고급 탭을 눌러주는 autohotkey 코드는 아래와 같습니다.

 

SendMessage, 0x1330, 2,, SysTabControl321, 시스템 속성

 

위 명령에서 0x1330 은 커서를 위치하게 하라는 명령 코드이고, 2 는 3번째 탭을 의미 합니다. (탭 번호는 0부터 시작합니다.) 그리고 아까 위에서 Active Window Info 에서 찾은 SysTabControl321 라는 컨트롤 이름과 시스템 속성이라는 창 이름을 넣어준 겁니다.

 

3. 환경 변수를 누른다.

시스템 속성에서 환경변수 버튼 위에 마우스를 갖다 놓으면 Active Window Info에 다음과 같이 환경변수 버튼의 컨트롤이 뜹니다.

 

 

이 버튼을 누르게 하는 Autohotkey 명령어는 다음과 같습니다.

 

ControlClick, Button7, 시스템 속성

 

위 명령어는 너무나 직관적이니깐 설명 안 해도 될 것 같군요.

 
 



이제 위에서 설명한 것들을 단축키로 지정해 볼까요.

 

위에서 설명한 일련의 동작들을 Win + s 라는 단축키로 지정해 보죠.

 

그래서 전체 코드는 다음과 같습니다.

 

 

#s::

Run, sysdm.cpl

WinWait, 시스템 속성

SendMessage, 0x1330,2,, SysTabControl321,시스템 속성

ControlClick, Button7, 시스템 속성

Return


 

 

이제 위 Autohotkey 코드를 확장자 ahk 로 저장한 후에 실행시키고 윈도우 키 + s 를 눌러 보시면

 

아래 그림처럼 순식간에 환경변수 설정 창이 뜨게 되죠~

 

 아래 동영상은 위에서 설명한 Autohotkey 예를 직접 실행해서 캡쳐 해 본 것입니다. 아래 동영상에서 보듯이 순식간에 환경변수 페이지가 열리죠. 



재미있죠? 그럼 오늘은 여기서 마치겠습니다.


  1. 오토핫키 2014.09.27 18:48

    연재해주신 글
    정말 많은 도움이 되고 있습니다.
    한글로 된 자료중에서 가장 알차네요^^
    감사합니다.

  2. 2015.01.03 18:07

    비밀댓글입니다

    • 남성 2015.01.03 19:04 신고

      WinSet, Transparent, 를 사용하여 창을 투명하게 한다음에 처리 하면 비활성 상태에서 동작하는것 처럼 보일 수 있을 것 같네요.

+ Recent posts