名前 題名 ▼ 白猫さん > すいません、またしゃしゃり出てきました > > vistaでの漢字変換がうまくできないので、調べたとところ > > 下記のサイトから漢字からひらがなに変換できる回答があったので、 > vista 及び delphi2009で行った所、うまくいきました > http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200903/200903_09030008.html > > 逆にひらがなから漢字変換できないか、ない知恵をしぼりだして > Button2Clickで記述した通り、keybd_eventを使えばできそうみたいですが > > もっとうまいやり方は、ありますかね? > > unit Unit1; > > interface > > uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls > , Forms, Dialogs, StdCtrls, msime, ActiveX; > //上記サイトの記述にしたがって msineとActiveXを入れる > > type > TForm1 = class(TForm) > Edit1: TEdit; > Edit2: TEdit; > Button1: TButton; > Button2: TButton; > procedure Button1Click(Sender: TObject); > procedure Button2Click(Sender: TObject); > private > { Private declarations } > public > { Public declarations } > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > //edit1.textの漢字をひらがなに変換する > procedure TForm1.Button1Click(Sender: TObject); > var > vGuid: TGUID; > vFELanguage: IFELanguage; > bsIn, bsOut: PWideChar; > W: array [0..1023] of WideChar; > Buffer: Pointer; > 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; > > Edit2.SetFocus; > edit2.SelStart:=length(edit2.Text); > end; > > //ひらがなに変換したものを漢字に変換処理する > procedure TForm1.Button2Click(Sender: TObject); > begin > if edit2.Text<>'' then > begin > keybd_event(VK_CONVERT,0,0,0); > keybd_event(VK_CONVERT,0,KEYEVENTF_KEYUP,0); > end; > end; > > initialization > CoInitialize(nil); > > finalization > CoUnInitialize; > > end. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link