喫茶XRAYトップページ

[スレッド全体
]

[2528] 漢字変換の件返信 削除
2009/7/3 (金) 10:13:16 白猫
すいません、またしゃしゃり出てきました

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.

[2532] Re:漢字変換の件返信 削除
2009/7/3 (金) 12:17:32 白猫
▼ 白猫さん
一部修正
procedure TForm1.Button2Click(Sender: TObject);
begin
 if edit2.Text<>'' then
 begin
  edit2.setfocus; //これ入れないとまずいすね!
  keybd_event(VK_CONVERT,0,0,0);
  keybd_event(VK_CONVERT,0,KEYEVENTF_KEYUP,0);
 end;
end;

[2533] Re2:漢字変換の件返信 削除
2009/7/3 (金) 12:39:16 Sayke
▼ 白猫さん
こんにちは
ちょっとコピペしました。

期待したのとちょっと違った結果でした(^_^;)
何故か意味不明な・・・

[2534] Re3:漢字変換の件返信 削除
2009/7/3 (金) 13:00:44 白猫
▼ Saykeさん
あれ、おかしいですね?
私の行ったやり方は、

Edit1のimemodeをimhiraにしてから
ひらがな 入力を漢字変換してから

button1を押して、edit2.textに再度ひらがな戻す

button2を押すと、edit2.textを未確定文字に戻す
形で、行いました。、

それと、このbutton2の作業は、delphi2009の
ユニコードでないと、うまく作動しません

以前のansiだと、変換に失敗します。

あつかましい質問ですが、delphi2009で
試験をしたのでしょうか?


[2535] Re4:漢字変換の件返信 削除
2009/7/3 (金) 13:26:48 Sayke
▼ 白猫さん

> あつかましい質問ですが、delphi2009で
D2007でした。
いやはや大変失礼いたしました。<m(__)m>

Vistaになって変換が上手くできず困っておりまして
救世主現るとばかり良く読みもせず飛びついてしまい
ますた。
ご迷惑お掛けしました。

[2537] Re5:漢字変換の件返信 削除
2009/7/3 (金) 17:51:36 白猫
▼ Saykeさん
すいませんね、お役に立てなくて

漢字からひらがなを取得するだけなら
このやり方でdelphi2007からもできるのですが

ひらがなを未確定文字列にするのは、難しいようです。

私も、マイクロソフトのTSF関係を読んだですが

私が、アホなのか? 書いてる奴がアホなんか
それとも、両者ともアホなのか?
よくわかりませんが?

ただ感覚的に、ひらがなを未確定文字列に変換する
ことが、できそうもないなと、思われました

解決策としては、ATOKなら従来にやり方で
visitaでも利用できるそうです。

私の言えることは、ここまでです。
ゴメンナサイ。

[2542] Re6:漢字変換の件返信 削除
2009/7/6 (月) 16:10:43 Sayke
▼ 白猫さん
> すいませんね、お役に立てなくて
とんでもございません。
> TSF関係
理解できませんです(^_^;)

(略)
SetImeMode(Edit1.Handle,imHira);
Imc := ImmGetContext(Edit1.Handle);
ImmSetOpenStatus(Imc,TRUE);
ImmSetCompositionString(Imc,SCS_SETSTR
    ,PChar(StrKana),Length(StrKana),nil,0);
ImmReleaseContext(Edit1.Handle,Imc);
(略)
Vistaでも[変換]Key([SPACE]じゃない)なら漢字変換できま
すが、でも思わず[SPACE]Key押さえちゃいますよね。
んで、消えてしまう。(正確には空白文字で上書き)

で騙しとして・・・
(略)
immSetCompositionString(Imc,SCS_SETSTR
  ,PChar(StrKana),Length(StrKana),nil,0);
ImmNotifyIME(Imc, NI_COMPOSITIONSTR, CPS_CONVERT, 0);
ImmReleaseContext(Edit1.Handle,Imc);
(略)
で、「外人の名前だったらどうすんの?」な質問は無しと
言う事で。


[2545] Re7:漢字変換の件返信 削除
2009/7/6 (月) 22:23:38 白猫
▼ Saykeさん
今、vistaから delphi2007を起動して、試験すると
うまく、うごきますね
恐れいりました。

でも,delphi2009から行うと、うまく動きませんでした
ansistringに変換しても、だめでした。

個人的な感想を言うと、vistaなんてvistaなんて
キライ!


[2546] Re8:漢字変換の件返信 削除
2009/7/6 (月) 23:04:55 Mr.XRAY
> 個人的な感想を言うと、vistaなんてvistaなんて
> キライ!


----------------------------------------------
注:  Delphiは弊社の製品ではありません.
     マイクロソフトはこの現象,この製品のパフォーマンスの信頼性に関与する
     ことはありません。
     今後共,末永くマイクロソフトの製品をご愛用いただけますよう深くお願い
     たします.

この情報でお客様の問題は解決しましたか ?
 ○はい
 ○いいえ
 ○わからない
----------------------------------------------

スミマセン.掲示板汚しでした.m(_ _)m


[2547] Re9:漢字変換の件返信 削除
2009/7/7 (火) 06:57:31 白猫
▼ Mr.XRAYさん
ああ、やっちゃた〜  おらしらね〜 ト!

もし、苛立ちがつのるようでしたら
ストレス解消に「ウエデイングベル」
の歌をオススメします

http://www.youtube.com/watch?v=H5O9_IvNOcw&NR=1

少しは、気分がやすらぐと思います。

この情報でお客様のストレスは解決しましたか ?
 ○はい
 ○いいえ
 ○わからない


[2548] Re10:漢字変換の件返信 削除
2009/7/7 (火) 11:37:42 Mr.XRAY
> この情報でお客様のストレスは解決しましたか ?
 ◎はい(少し)
 ○いいえ
 ○わからない

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82