여러분들은 컴퓨터를 사용하면서 어떤 작업을 가장 많이 하시나요? 저는 개인적으로 생각하기에 복사 붙여넣기라고 생각을 합니다. 그래서 복사 붙여넣기를 잘 하는 것만으로도 컴퓨터 사용의 효율성은 분명히 올라간다고 생각합니다. 그래서 저는 아래 포스팅에서 소개를 했던 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 를 사용하면 윈도우 프로그램들의 각 Control 들을 제어 할 수 있습니다.


2012/03/17 - [programming language/Autohotkey] - Autohotkey 로 제어판 다루기


 

E-TRADE Pro 를 실행 해보면 아래 화면과 같습니다.

 

저는 위 그림과 같이 고객 ID 는 저장을 해 놓은 상태로 비밀 번호와 공인인증만 Autohotkey 를 사용하여 로그인 합니다.

 

HTS 에 로그인 하기 위해서는 당연히 비밀 번호를 넣고~ 공인인증 번호를 넣고 마스터로 접속이라는 버튼을 눌러야 합니다.

 

일단 위 그림의 비밀번호 부분의 컨트롤이 뭔지를 확인해야겠죠.

 

윈도우를 설치한 폴더를 확인하면 아래 그림과 같이 AutoIt3 Window Spy 라는 프로그램이 있습니다. AutoIt3 Window Spy 를 실행 시키고~ 아래 그림과 같이 비밀 번호를 입력하는 부분에 마우스를 올리면~ 해당 control 에 대한 정보가 나옵니다.

 

비밀 번호를 입력하는 부분은 Edit2, 공인 인증을 입력하는 부분은 Edit3, 마스터로 접속이라는 버튼은 Button3 라는 것을 확인 할 수 있습니다.

 

 

이제 알아내야 할 정보는 다 알아 냈습니다.

 

다음과 같이 코딩만 하면 됩니다. 아래 코드 예는 Win + C 를 누르면 E*TRADE Pro HTS 가 샐행되면서~ 비밀번호와 공인인증 비밀번호가 입력되고~ 마스터로 접속 버튼을 클릭하게 됩니다. 아래 코드에서 파란 색으로 표시한 부분에 각자의 비밀번호를 넣어 주시기 바랍니다.

 

#c:: ; Win+ C

Run "C:\ETRADE\XingQ\xingqlogin.exe" ; HTS 실행

WinWait, E*TRADE Pro

WinActivate, E*TRADE Pro

ControlSendRaw, Edit2, 비밀번호,E*TRADE Pro ; 비밀번호 입력

Sleep, 100

ControlSendRaw, Edit3, 공인인증비밀번호,E*TRADE Pro ; 공인인증 비밀번호 입력

Sleep, 100

ControlClick, Button3, E*TRADE Pro ; 마스터로 접속 버튼 클릭

Return

 

위 Autohotkey 작성후에 Win+ C 를 눌러서 실행해 보면~ 다음 동영상에서 보는 바와 같이 E*TRADE Pro 가 실행되면서 간단하게 로그인 되는 것을 확인 할 수 있습니다.





최근에 몇몇 분들이 위 스트립트가 실행이 안된다고 해서 좀더 보완한 코드는 아래와 같습니다. 아래 코드는 현재 이베스트 HTS 에서는 확인을 했습니다. 미래에셋 카이로스에서도 비슷하게 하면 됩니다. 


Run "C:\eBEST\eBestPro\XingQLogin.exe"

WinWait,eBEST Pro

WinActivate,eBEST Pro

ControlFocus, Edit2,eBEST

ControlSend, Edit2, 비밀번호,eBEST

Sleep, 2000

ControlFocus, Edit3, eBEST

ControlSend, Edit3, 공인인증비밀번호,eBEST Pro

Sleep, 2000

ControlClick, Button3,eBEST


  1. 2016.02.18 10:11

    비밀댓글입니다

    • 남성 2016.02.18 13:16 신고

      글쎄요 이렇게만 봐서는 왜 그런지 정확히 모르겠네요. 잘 되다가 안되신다고 하는데 대소문자 문제는 아닐것 같은데... 입력은 되는데 잘 못 들어가는건지 아님 입력 자체가 안되는건지도 확인을 해 보셔야 할 것 같네요. Edit3 가 맞는지도요.

  2. 2016.08.17 18:57

    비밀댓글입니다

  3. 2016.08.17 19:03

    비밀댓글입니다

    • 남성 2016.08.17 19:45 신고

      위 포스팅에서는 Etrade 증권 HTS 에 대해 해 본건데, 다른 증권 사의 경우에는 Edit2, Edit3, Button3 가 아닐 수 있습니다.
      Active window Info 에서 사용하시는 HTS 의 Contol ClassNN 이름이 무엇인지를 정확히 확인 후 넣으셔야 하고

      Sleep 값을 좀 더 크게 줘 보시거나

      그래도 안 될때는 아래와 같이 한번 해 보시기 바랍니다.

      아래 코드는 제가 방금 이베스트 증권 HTS 에서 정상적으로 동작하는거 확인한 코드 입니다.


      Run "C:\eBEST\eBestPro\XingQLogin.exe"
      WinWait,eBEST Pro
      WinActivate,eBEST Pro
      ControlFocus, Edit2,eBEST
      ControlSend, Edit2, 비밀번호,eBEST
      Sleep, 2000
      ControlFocus, Edit3, eBEST
      ControlSend, Edit3, 공인인증비밀번호,eBEST Pro
      Sleep, 2000
      ControlClick, Button3,eBEST


  4. 2016.08.17 19:43

    비밀댓글입니다

    • 남성 2016.08.17 19:46 신고

      위 포스팅이랑 노트패드에서의 입력이랑 은 상관이 없는건데....

  5. 종혁 2018.10.15 12:08

    winwait, winactivate 뒤에 오는 명령어들은
    뭘 근거로 만들어졌나요? 폴더명도 아닌거 같은데
    예를 들어 미래에셋 카이로스는 어떻게 써야 하나요

    • 남성 2018.10.15 18:18 신고

      AutoIt3 Window Spy 를 실행하고 kairos 를 찍어보면 해당 프로그램의 타이틀 명이 나옵니다. 그 타이틀명을 넣어주면 됩니다.

  6. 종혁 2018.10.15 13:24

    ebest pro 부분을 kairos 로 바꿔서 해봤는데 안되요

    • 남성 2018.10.15 15:45 신고

      창 이름을 제대로 바꾸셨다라고 한다면은 edit 부분의 classNN 을 윈도우 스파이 프로그램으로 정확하게 확인하신 후 넣어 주셔야 됩니다

  7. 종혁 2018.10.16 12:18

    타이틀, classnn 부분
    둘다 정확하게 입력했는데 안되요
    위의 2개 예제 전부다요. ㅠㅠ
    카이로스요

    창만 뜨고 입력이 안되요

  8. 종혁 2018.10.16 22:33

    감사합니다.

    f1::Run, C:\미래에셋대우\카이로스\kairos.exe

    WinWait,Kairos

    WinActivate,Kairos

    ControlFocus, Edit2,Kairos

    ControlSend, Edit2, ######,Kairos

    Sleep, 2000

    ControlFocus, Edit3, Kairos

    ControlSend, Edit3, ##########,Kairos

    Sleep, 2000

    ControlClick, Button1,Kairos

    Return


    ----------------------------------
    f1::Run, C:\미래에셋대우\카이로스\kairos.exe

    WinWait, Kairos

    WinActivate, Kairos

    ControlSendRaw, Edit2, ######## ; 비밀번호 입력

    Sleep, 100

    ControlSendRaw, Edit3, #########,Kairos ; 공인인증 비밀번호 입력

    Sleep, 100

    ControlClick, Button1, Kairos ; 마스터로 접속 버튼 클릭

    Return

    • 남성 2018.10.16 23:16 신고

      다른건 다 잘 하신거 같은데 단축키 쓰는 방법이 잘못된 거네요.

      아래와 같이 코딩하면 F1 을 누르면 Kairos.exe 만 실행하고 아래 부분의 코드는 실행하지 않습니다. 아래와 같이 msgbox 를 넣어보면 실행되지 않는 것을 확인 할 수 있습니다.

      F1::Run "C:\\미래에셋증권\\카이로스\Kairos.exe"
      msgbox Test
      WinWait, Kairos
      WinActivate, Kairos
      ControlFocus, Edit2, Kairos
      ControlSendRaw, Edit2, #########,Kairos
      Sleep, 2000
      ControlFocus, Edit3, Kairos
      ControlSendRaw, Edit3, #########,Kairos
      Sleep, 2000
      ControlClick, Button1, Kairos
      return

      올바른 방법은 한 줄 띄어서 코드를 써 줘야 원하는 대로 정상적으로 실행 될 겁니다.

      아래와 같이 해 주셔야 합니다. 아 그리고 혹시나 해서 말씀드리는데 카이로스에서 ID 저장에는 체크가 된 상태인거죠?

      아래 코드는 제가 정상적으로 동작하는 거 확인 한 코드 입니다. ID 저장 체크 된 상태에서 ID비밀번호와 공인인증비밀번호를 자동으로 넣고 로그인 버튼을 자동으로 누르는 코드 입니다.

      F1::
      Run "C:\\미래에셋증권\\카이로스\Kairos.exe"
      WinWait, Kairos
      WinActivate, Kairos
      ControlFocus, Edit2, Kairos
      ControlSendRaw, Edit2, #########,Kairos
      Sleep, 2000
      ControlFocus, Edit3, Kairos
      ControlSendRaw, Edit3, #########,Kairos
      Sleep, 2000
      ControlClick, Button1, Kairos
      return



  9. 종혁 2018.10.17 09:11

    감사합니다.
    엄청나십니다. 내공이...
    넷상에서 hts 입력 방법이 유일하게 있는 한곳.
    많이 배웠습니다.
    읽은만한 글도 많은것 같아 자주 들르겠습니다.
    행복한 하루 되세요,

  10. 2018.10.17 22:51

    비밀댓글입니다

    • 남성 2018.10.22 13:52 신고

      쉼표는 굳이 ` 로 이스케이핑을 하지 않아도 되야 될 것 같네요.

  11. 종혁 2020.03.20 22:21

    오랜만에 인사드려요.
    재작년 알려주신 미래에셋 hts 입력 잘사용중이었는데
    이번에 pc를 바꾼후 부터 비밀번호 입력 오류라고 뜨네요.
    단지 pc만 바꿨을 뿐인데..

    이전 pc에서는 10번중 1번꼴로 오류 떴다면
    이번엔 10번중 9번은 비밀번호 입력 오류 라고 합니다.
    왜그럴까요..

    똑같이 응용한 키움 hts는 잘만 됩니다.

    • 남성 2020.03.20 23:14 신고

      요즘 미래에셋증권은 잘 사용하고 있지 않아서 왜 그런지는 정확하게 모르겠지만 아마도 HTS 키보드 보안 프로그램 같은 것들 때문이 아닌가 생각이 되네요.

      질문 내용을 보면 될 때도 있고 안 될 때도 있는 것 같은데 ControlFocus를 한 상태에서 ControlSendRaw 를 사용하는게 아니라 send, postmessage, sendmessage 같은 것도 시도를 해 보시는게 좋을 것 같고 중간 중간 sleep 시간을 조절해 보는 것도 좋을 것 같습니다.

  12. 종혁 2020.03.21 13:38

    관리자의 승인을 기다리고 있는 댓글입니다

이전 포스팅에서 말씀 드린 데로 저는 Autohotkey 가 없으면 윈도우를 제대로 사용하지 못 할 정도로 Autohotkey 를 좋아합니다.

 

컴퓨터에 대한 배경 지식이 별로 없어서 dllcall() 등에 대해서는 아직까지도 이해가 안 되는 내용들이 많지만~ 그래도 꾸준히 관심을 가지고 있는데요

 

최근에 Autohotkey basic 에서 Autohotkey_L 로 넘어 오게 되었습니다.

 

Autohotkey basic 에 비해 Autohotkey_L 에서는 객체 지향적인 부분에서 특히 두드러진 특징이 있는 것 같더군요.

 

배열이나 COM object 등도 지원을 하고 해서 참~~ 배울 게 많은 것 같더군요.

 

그런데 지금까지 Autohotkey_L 로 넘어오고 싶어도 선뜻 넘어오지 못했던 게 기존의 코드 중 일부가 안 돌아가는 경우가 있어서 입니다.

 

가장 큰 걸림돌은 인코딩 이더군요.

 

Autohotkey_L Unicode 를 사용 하면서 기존 코드의 인코딩이 바뀌면서 정상적으로 동작하지 않는 경우였습니다.

 

이렇게 안 되는 거 일일이 찾아서 바꾸는 게 좀 귀찮기도 하고 제대로 안돼서 기존의 편리함이 없어져 버릴까 걱정도 되고 하더군요.

 

제 코드 중에 뮤토렌트 실행과 관련한 코드 부분이 있는데~

 

이 부분이 Autohotkey_L 로 넘어오면서 정상적으로 안 됐습니다.

 

기존의 코드는 아래와 같습니다.

 

#k::

DetectHiddenWindows, On

 

IfWinExist, ahk_class μTorrent4823DF041B09

{

 

    WinActivate, ahk_class μTorrent4823DF041B09

    WinActivate    

    WinShow

}

else

{            

    Run, "C:\Program Files\uTorrent\uTorrent.exe"

    WinWait, ahk_class μTorrent4823DF041B09

    WinShow

    WinActivate

}

return

 

위 코드는 μTorrent 가 실행 중에 있으면 화면에 보이게 하고 그렇지 않으면 실행 시키는 코드 입니다.

 

기존에 Autohotkey basic 에서는 굉장히 잘 동작했었죠~

 

그런데 Autohotkey_L 로 바뀌면서 정상적인 동작이 안 됐습니다.

 

몇 가지의 실험을 해보니 위 코드의 특수 문자인 μ 가 포함되어 있는 부분 때문이었습니다.

 

그래서 μ 부분 없이 torrent 프로그램을 인식 시키는 방법이 없을까 생각해 보다가 다음과 같은 코드를 만들었습니다.

 

뭐 만족스럽지는 않지만 정상적으로 동작은 하네요.

 

SetTitleMatchMode 2

#k::

DetectHiddenWindows, On

 

IfWinExist, Torrent 3

{

    WinActivate    

    WinShow

}

else

{            

    Run, "C:\Program Files\uTorrent\uTorrent.exe"

    WinWait, Torrent 3

    WinShow

    WinActivate

}

Return

 

위 코드에서 SetTitleMatchMode 2 로 설정한 것은 제목의 일부라도 일치 하면 IfWinExist가 인식하도록 하기 위한 것입니다.

 

현재 제 뮤토렌트 버전은 3.1.2 이고 프로그램의 타이틀 바는 다음과 같이 구성되어 있습니다.

 

 

타이틀바에 다운로드 정도도 표시되도록 해서 사용하고 있는데~

 

이러한 부분은 계속 변하는 부분이어서 특정한 값으로 μTorrent 를 구분하기가 어렵기 때문에~~

 

제목 중에서 변하지 않는 부분의 일부인 Torrent 3이 타이틀에 있으면 인식하도록 설정한 것이죠.

 

향후의 버전 업데이트 될 때를 생각해서 그 뒤의 .1.2 부분은 제외를 시켰습니다.

 

Autohotkey_L 을 사용하면서 저와 같은 문제가 있으신 분들은 참조 하시길~

 

그리고 더 나은 솔루션이 있으신 분들은 댓글 좀 부탁 드립니다.


  1. 행인 2012.05.21 21:21

    정규식을 이요하시면 비교적으로 더 확실하게 타겟을 잡으실 수 있습니다.

    • 남성 2012.05.21 22:00 신고

      아~ 정규식!! 참고 하겠습니다.
      방문해 주셔서 감사합니다. ^^

+ Recent posts