掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ImmGetConversionListの代替は? (ID:33569)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ImmGetConversionListにこだわりがなく、ただカナを取得できればいいなら、これでできるかもしれないです。ただし手持ちの Windows XP SP3 + Microsoft(R) IME スタンダード 2002 の環境でしかテストしてないので、Vistaでは無理かもしれません。 まず http://read.pudn.com/downloads90/sourcecode/chinese/344545/Delphi/msime.pas__.htm をmsime.pasとして保存し、usesのoffice2000を消します。 メインのコードは以下になります。 --------------------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, msime, ActiveX; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var vGuid: TGUID; vFELanguage: IFELanguage; bsIn, bsOut: PWideChar; W: array [0..1023] of WideChar; begin if CLSIDFromString(PWideChar(WideString('MSIME.Japan')), vGuid) <> S_OK then Exit; if CoCreateInstance(vGuid, nil, CLSCTX_SERVER, IFELanguage, vFELanguage) <> S_OK then Exit; if vFELanguage.Open <> S_OK then Exit; StringToWideChar(Edit1.Text, @W, SizeOf(W)); bsIn := SysAllocString(@W); bsOut := nil; if vFELanguage.GetPhonetic(bsIn, 1, -1, @bsOut) <> S_OK then Exit; Edit2.Text := WideCharToString(bsOut); if Assigned(bsIn) then SysFreeString(bsIn); if Assigned(bsOut) then SysFreeString(bsOut); vFELanguage.Close; vFELanguage := nil; end; initialization CoInitialize(nil); finalization CoUnInitialize; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.