平仮名を漢字に変換するには?

解決


みゆ  2002-08-16 04:04:29  No: 1275

Editに平仮名が確定された状態で入っていて、
Buttonを押したら漢字に変換するようにしたいのですが、
どのようにすればいいのですか?
また、それをWebBrowserの検索ボックスに挿入するようにしたいので、
それも教えていただけたらありがたいです(^^;;
よろしくお願いします<(_  _)>


たかみちえ  URL  2002-08-16 05:10:08  No: 1276

具体的な方法は知りませんけど、IMEのAPIにあるかもしれません。
指定文字列を変換させるとか、あるようなので。

  ただ、MS-IMEなら、98以降がないとだめです。
WebBrowserの検索ボックスに…。

  たしか、WebBrowserに挿入するとかの質問が前にあったと思うので、
WebBrowserで、掲示板を検索してみてはどうでしょう?


みゆ  2002-08-18 21:22:38  No: 1277

色々調べたんですけど、漢字変換は無理みたいです(>_<。)
キーボードの変換キーをユーザーに押してもらうことにします。
いつも教えていただいてどうもありがとうございます!
もう少しで出来上がりそうです!(*^ー^*)


たかみちえ  URL  2002-08-19 01:59:01  No: 1278

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で"変換"キーを押させる^^;


たかみちえ  URL  2002-08-19 02:02:17  No: 1279

あらあら実行ファイルすらなくなってる^^;

  と思ったら、同機能のソフトがベクターにありましたね。
http://www.vector.co.jp/soft/win95/writing/se072532.html


hatena  2002-08-20 15:43:15  No: 1280

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 によっては設定が変わるかもしれません。


みゆ  2002-08-21 05:05:24  No: 1281

>IME2000 の場合は、mmSetCompositionStringW を mmSetCompositionStringA 
>にして、meMode は、imDontCare にする必要がありました。
わざわざ調べていただいて、ありがとうございました。
あの、meModeをimDontCareにするというのは、ヘルプで見て、Typeの所に
書くのだと分かったのですが、エラーが出てうまくいきませんでした(>_<)
1から10まで申し訳ありませんが、教えていただけますか?


hatena  2002-08-21 05:17:29  No: 1282

>あの、meModeをimDontCareにするというのは、ヘルプで見て、Typeの所に
>書くのだと分かったのですが、エラーが出てうまくいきませんでした(>_<)

すみません。タイプミスです。ImeMode が正しいです。
TEditのプロパティに ImeMode というのがあります。
そこをimDontCareにするということです。

が、今確認してみたら、imHira でもいいみたいです。


みゆ  2002-08-21 05:37:57  No: 1283

出来ました!かなり感激ですっ!!
お世話になりました〜。


たかみちえ  URL  2002-08-21 08:26:55  No: 1284

あ、そのAPIはない場合もあるので、
動的ロードのほうがいいと思いますよ。
ime2000でも98でも動かせるようになるかもしれないし。

  Delphiはわりと簡単に動的ロードできるみたいなので。


hatena  2002-08-21 09:23:11  No: 1285

>  あ、そのAPIはない場合もあるので、

この情報のソースはどこからでしょうか。

Delphi3.1 ですでに、Immユニットで宣言されているので、
少なくともWin98(Win95?)からは、OS で実装している
はずだと思っているのですが。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加