MSIME変換ウインドウの起動方法


sigotnin  2023-03-14 23:02:21  No: 150884  IP: 192.*.*.*

日本語のひらがなの文字を渡して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;

編集 削除
AAAAA  2023-03-15 18:14:34  No: 150885  IP: 192.*.*.*

ImmNotifyIME(Imc, NI_OPENCANDIDATE, 0, 0);  取ると開く

 ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0); の時点で開くみたい

編集 削除