델파이

한영모드 알아내기 윈도우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;