Editに平仮名が確定された状態で入っていて、
Buttonを押したら漢字に変換するようにしたいのですが、
どのようにすればいいのですか?
また、それをWebBrowserの検索ボックスに挿入するようにしたいので、
それも教えていただけたらありがたいです(^^;;
よろしくお願いします<(_ _)>
具体的な方法は知りませんけど、IMEのAPIにあるかもしれません。
指定文字列を変換させるとか、あるようなので。
ただ、MS-IMEなら、98以降がないとだめです。
WebBrowserの検索ボックスに…。
たしか、WebBrowserに挿入するとかの質問が前にあったと思うので、
WebBrowserで、掲示板を検索してみてはどうでしょう?
色々調べたんですけど、漢字変換は無理みたいです(>_<。)
キーボードの変換キーをユーザーに押してもらうことにします。
いつも教えていただいてどうもありがとうございます!
もう少しで出来上がりそうです!(*^ー^*)
http://www.netlaputa.ne.jp/~stadt/vb/p22_imereconv/imereconv.htm
VBのですけど、こういうのがあるので、"再変換扱いで"ということはできると思います。
ホットキーを押すと、選択中文字列をクリップボード経由で再変換させるというソフトも、
見たことありますし。
http://216.239.33.100/search?q=cache:Y5cOs-xi9i0C:member.nifty.ne.jp/makoko/reconv.htm+Reconv&hl=ja&lr=lang_ja&ie=UTF-8
(Googleのキャッシュ、キャッシュもとのページは消滅してしまったようです)
前述のソースを解析してみるとかすれば、何かわかるかもしれませんね。
あらかじめ配列に一覧表を作っておいて、この文字ならこれ…という風にやることもできます。
IMEのようにたいそうな辞書機能じゃないですけど、
自分の気に入った言葉を、すぐ変換できるところはいいと思います。
あとは最後の手段、Keybd_eventで"変換"キーを押させる^^;
あらあら実行ファイルすらなくなってる^^;
と思ったら、同機能のソフトがベクターにありましたね。
http://www.vector.co.jp/soft/win95/writing/se072532.html
IME関係のAPIを使って、変換候補を表示させることはできます。
変換候補から選択して確定するのは、ユーザーがする必要があります。
Uses に Imm を追加して、ボタンクリックイベントを下記のようにする。
procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
Imc: HIMC;
begin
Edit1.SetFocus;
S := Edit1.Text;
if S = '' then Exit;
Edit1.Clear;
Imc := ImmGetContext(Edit1.Handle);
ImmSetCompositionStringW(Imc, SCS_SETSTR, PChar(S),Length(S),nil,0);
//変換文字列の設定
ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0); //変換実行
ImmNotifyIME(Imc, NI_OPENCANDIDATE, 0, 0); //変換候補リスト表示
IMMReleaseContext(Edit1.Handle, Imc);
end;
Edit1 の ImeMode は、ImHira
これは、ATOK12 で確認しました。
IME2000 の場合は、mmSetCompositionStringW を mmSetCompositionStringA
にして、meMode は、imDontCare にする必要がありました。
OS や IME によっては設定が変わるかもしれません。
>IME2000 の場合は、mmSetCompositionStringW を mmSetCompositionStringA
>にして、meMode は、imDontCare にする必要がありました。
わざわざ調べていただいて、ありがとうございました。
あの、meModeをimDontCareにするというのは、ヘルプで見て、Typeの所に
書くのだと分かったのですが、エラーが出てうまくいきませんでした(>_<)
1から10まで申し訳ありませんが、教えていただけますか?
>あの、meModeをimDontCareにするというのは、ヘルプで見て、Typeの所に
>書くのだと分かったのですが、エラーが出てうまくいきませんでした(>_<)
すみません。タイプミスです。ImeMode が正しいです。
TEditのプロパティに ImeMode というのがあります。
そこをimDontCareにするということです。
が、今確認してみたら、imHira でもいいみたいです。
出来ました!かなり感激ですっ!!
お世話になりました〜。
あ、そのAPIはない場合もあるので、
動的ロードのほうがいいと思いますよ。
ime2000でも98でも動かせるようになるかもしれないし。
Delphiはわりと簡単に動的ロードできるみたいなので。
> あ、そのAPIはない場合もあるので、
この情報のソースはどこからでしょうか。
Delphi3.1 ですでに、Immユニットで宣言されているので、
少なくともWin98(Win95?)からは、OS で実装している
はずだと思っているのですが。
ツイート | ![]() |