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")
'programming language > Autohotkey' 카테고리의 다른 글
Autohotkey 전체 화면 캡쳐 capture (0) | 2017.02.15 |
---|---|
Autohotkey 로 Powerpoint 파일 열기 (5) | 2017.02.01 |
Autohotkey blockinput 을 사용한 사용자 키보드, 마우스 입력 막기 (0) | 2016.11.02 |
Autohotkey 을 사용하여 Code line number 지우기 (0) | 2016.10.19 |
Autohotkey를 사용하여 CapsLock, NumLock, ScrollLock 상태 고정 시키기 (0) | 2016.10.14 |
Autohotkey 숫자에 컴마(,) 넣기 (2) | 2016.10.12 |
Autohotkey 메일 프로그램 실행하기 mailto (0) | 2016.10.03 |
Autohotkey를 사용한 이트레이드 증권 HTS(E-TRADE Pro) 자동 로그인 (3401) | 2016.09.03 |
댓글