델파이
한영모드 알아내기 윈도우7 64비트에서
미스터몽키
2016. 3. 11. 01:09
xp에서 잘 작동하던 ImmGetContext 함수가 윈도우7에서 작동하지 않아 애를 먹었다.
결국 Win32NLSEnableIME(Application.Handle, TRUE); 함수가 필요하다는 것을 검색을 통해 알았다
다음 함수는 한영모드가 한글일때 True 영문일때 False 를 리턴한다.
function TForm16.GetImeHanMode: boolean;
var
hContext: HIMC;
dwSentence : DWORD;
dwConversion : DWORD;
begin
Win32NLSEnableIME(Application.Handle, TRUE); // <- 윈도우7 부터 필요한듯, 64비트에서 필요한듯 그래야 hContext 0 이 아니다.
hContext := ImmGetContext(Application.Handle);
ImmGetConversionStatus(hContext , dwConversion, dwSentence);
ImmReleaseContext(Application.Handle, hContext);
Result := dwConversion = IME_CMODE_NATIVE; //IME_CMODE_HANGEUL와 동일
end;