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;
'델파이' 카테고리의 다른 글
Copy, Length AnsiString UnicodeString 차이, IsCharAlphaA 알파벳 문자확인 (0) | 2016.03.12 |
---|---|
델파이 유니코드 체계 TComport 인쇄시 한글 깨짐 해결 (0) | 2016.03.11 |
MDIChild 폼을 Modal폼으로 생성하기, 사용자정의 생성자(constructor) (0) | 2015.12.31 |
델파이 10 Seattle 설치후 콤포넌트 라이브러리 설치( ComPort, NumEdit) (0) | 2015.10.31 |
델파이 IDE UPX(실행파일압축) 설정하기 (0) | 2015.10.06 |