日本語のひらがなの文字を渡してMSIMEで再変換しようとしています。
以下のコードはWindowsXPで動きましたが現在動きません。
実行するとエラーはでませんが、ひらがなが即座に確定されていまい、IME変換ウインドウが起動しません。
どのように変更したらよいでしょう?
var
Imc: HIMC;
S: String;
src, dest: WideString;
res: HResult;
dwConversion, dwSentence: DWORD;
L: integer;
begin
dist:='ひらがな';
Imc := ImmGetContext(handle);
try
if Imc <> 0 then
begin
S := dest;
L := length(S);
ImmSetOpenStatus(Imc, True);
ImmGetConversionStatus(Imc, dwConversion, dwSentence);
dwConversion := dwConversion and not IME_CMODE_NOCONVERSION;
ImmSetConversionStatus(Imc, dwConversion, dwSentence);
ImmSetCompositionStringW(Imc, SCS_SETSTR, PWideChar(S), L * 2, nil, 0);
ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0);
ImmNotifyIME(Imc, NI_OPENCANDIDATE, 0, 0);
end;
finally
ImmReleaseContext(Wnd, Imc);
end;
end;
ImmNotifyIME(Imc, NI_OPENCANDIDATE, 0, 0); 取ると開く
ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0); の時点で開くみたい
ツイート | ![]() |