본문 바로가기
컴퓨터 인터넷

오토핫키 매크로: 한글 자판에서 영타 출력하기(Clipboard 기능 사용)

by 통합메일 2021. 7. 9.
반응형

원래의 코드

;<<엑셀에서>>
Send, ^g ;컨트롤G 누르면 엑셀의 이동 기능 호출
sleep, 100
send, C4 ;C4셀주소 입력
Send, {enter} ;이동
sleep, 100
Send, ^{g} ;블럭설정을 위해 다시 엑셀의 이동 기능 호출
sleep, 100
send, X10 ;셀주소 X10 입력
send, ^v
Send, +{enter}
영문 자판이었으면 사실 별 문제가 없는 코드다. 그런데 엑셀에서 자판이 한글로 설정되어 있는 경우에는 아래처럼 된다.

C4를 C4로 타이핑하지 못하고 한글 자판 때문에 ㅊ4로 타이핑하게 되고 그로 인해 이동 기능을 제대로 작동시키지 못하게 되는 것이다. 그래서 이걸 해결하려고 막 내가 알고 있는 걸 다 총동원 했다. 그래봤자 Send랑 Sendraw랑 Sendinput으로 바꿔가면서 사용해봤는데 안 되더라 -_-? 어라 분명히 이거 되는 거 아니었나? 근데 안 되더라.

 

그런데 그럴 수밖에 없는 것이.. 내가 지금 공부를 해보니까..

Send는 그냥 평범한 Send고..

Sendraw는 ^+!#같은 특수키들 (순서대로 Ctrl Shift Alt Win)을 있는 그대로 특수문자로 표시하기 위한 명령어

Sendinput은 이 명령어가 작동하는 동안에는 물리적인 타이핑을 해도 그 타이핑이 오토핫키의 타이핑에 개입하지 못한다고 한다. 아니 그럼 그렇다면 Send 명령어로 문자 입력이 이루어지는 과정에서는 물리적인 타이핑으로 오토핫키의 동작에 끼어들 수 있다는 거구나?

 

그래서 지금 테스트를 해보니까

만약에 !autohotkey 를 타이핑한다면

 

Send, {!}autohotkey             - 나열하듯 타이핑 치듯 출력됨. 촤르륵.

Sendraw, !autohotkey          - 나열하듯 타이핑 치듯 출력됨. 촤르륵.

Sendinput, {!}autohotkey      - 한방에 도장 찍히듯 뙇뙇뙇 출력됨. 촤르륵이 아니고 쾅쾅쾅. 찍는 느낌.

 

Sendraw는 문자열을 있는 그대로 출력하는 거라서 느낌표를 그냥 적어도 되지만 send나 sendinput의 경우에는 느낌표를 그냥 적을 경우 이를 Alt키로 인식해버리기 때문에 반드시 대괄호로 감싸줘야만 한다. 하여간 그래서 내가 저 위에 있는.. C가 ㅊ으로 출력되는 문제를 해결하기 위해서 sendraw나 sendinput을 사용해준 건 당연히 별 효과가 없을 수밖에 없었다. 그래서 거의 포기할까 하던 찰나에 한 줄기 희망이 보였으니 그것이 바로 Clipboard 명령어였다.

 

Send, ^g
sleep, 100
Clipboard = c4 ;셀 블록 설정 작업 시작
Send, ^v
Send, {enter}
sleep, 100
Send, ^{g}
sleep, 100
Clipboard = x10
send, ^v
Send, +{enter}
이가 없으면 잇몸이다.

직접 타이핑을 하는 게 아니라 오토핫키의 Clipboard 기능을 이용해서 가상의 클립보드에 내용을 입력한 다음 이를 Ctrl+V 붙여넣기를 이용해서 붙여넣으면 되는 문제였다. 누구인지 몰라도 정말 잔머리가 잘 돌아간다. 정말 이런 거 하나하나 배우고 해결해 나갈 때마다 맛보는 희열이라는 게 너무나도 즐겁다. 시간 가는 줄 모르겠다.

 

 

이렇게 해야 한다.

반응형

댓글