처음으로 팁을 작성해 봅니다~
현재 입력 상태가 한글 인지 영문 인지 확인해서, 원하는 입력 상태로 전환하는 방법입니다.
검색 하다가 퍼왔네요..
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)
}
사용하는 방법은
ret := IME_CHECK("A")
if %ret% <> 0 ; 1 means IME is in Hangul(Korean) mode now.
{
Send, {vk15sc138} ; Turn IME into English mode.
}
요렇게 하시면 됩니다. ^^
위 소스의 경우 ret가 0이 아니면 한글 모드란 건데, 그럴 경우에 영문 모드로 전환시켜 주는 스크립트가 되겠습니다.
Send, {vk15sc138} 부분이 한/영 키를 누르는 부분이 됩니다. 당연히 이미 영문 모드인 경우에는 한/영키를 누르지 않겠죠?
한글 모드로 전환시키는 건 간단히 %ret% = 0 일때 Send 해 주는 식으로 스크립트를 짜시면 될겁니다.
그리고 한글 자판을 영문으로 쳐서
Send, dkssudgktpdy (안녕하세요)
이렇게 스크립트에 넣어주시면 한글로 잘 작성이 됩니다.
한글로 그대로 스크립트에 집어 넣어도 되는데, 이 경우에는 AutoHotkey.exe 프로그램이
ANSI 인지 UTF-8 인지에 따라 인코딩이 서로 다를 경우 깨질 수가 있으니
왠만하면 영타로 치시는걸 권장드려요.
좋은 글 감사합니다^^