HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0125
radeonIME 変換4解決


radeon

リンク

2007/1/25(Thu) 14:04:40|NO.5121

入力ボックスにIMEの変換ウィンドウ(コンポジションウィンドウ)が表示されているか
どうかを知りたいんですけどなかなかうまくいきません。少しだけスクリプトにはなった
んですが、どこかが間違っているようでエラーになってしまいます。
分かる方いらっしゃいましたらどこを修正すればいいのか教えてくださいませ。
お願いします。


#uselib "imm32.dll" #cfunc ImmGetContext "ImmGetContext" int #cfunc ImmGetCompositionWindow "ImmGetCompositionWindow" int a="" input a,300,15 : inputID=stat ime=ImmGetCompositionWindow(ImmGetContext(objinfo(inputID,2))) if ime=0 : mes "非表示" : else : mes "表示" stop



この記事に返信する


radeon

リンク

2007/1/25(Thu) 15:17:06|NO.5123

スクリプト間違えました。下が正しい(動かないけど)スクリプトです。


#uselib "imm32.dll" #cfunc ImmGetContext "ImmGetContext" int #cfunc ImmGetCompositionWindow "ImmGetCompositionWindow" int  a=""  input a,300,15 : inputID=stat  repeat key=0 : stick key : if key=64 : gosub *messageime wait 1 loop *messageime  ime=ImmGetCompositionWindow(ImmGetContext(objinfo(inputID,2)))  if ime=0 : mes "非表示" : else : mes "表示"  return
ctrlキーで変換ウィンドウの状態を表示するつもりのスクリプトです。



As

リンク

2007/1/25(Thu) 15:23:17|NO.5124

えーと、 変換ウィンドウを表示させるかどうかを調べるには
本来ではWM_IME_NOTIFYというメッセージを処理しなくてはならないのですが、
現段階のHSPではオブジェクトのプロシージャを取得できないので仕様できません。

ちょくとさんがオブジェクトに対するプロシージャを取得してくれるプラグインを
公開しているのでこれを使えば可能になります。
http://yokohama.cool.ne.jp/chokuto/download/index.html

これが打倒な方法です。
また、ImmGetCompositionWindow では 変換ウィンドウが表示されたかどうかを調べること
はできません。先ほどやってみましたが無理でした。


そこで邪道な方法としてひとつ。
http://www.kumei.jp/c_lang/sdk3/sdk_282.htm
このページで紹介されているように変換候補を取得し、その変換候補になんらかの文字があれば
表示してあるかどうか調べることができます。ほんの少しだけCPU喰いますが、仕方ないでしょうね^^;



As

リンク

2007/1/25(Thu) 16:27:00|NO.5125




radeon

リンク

2007/1/26(Fri) 10:09:50|NO.5140

返信ありがとうございます。
変換候補の有無を調べる方法できちんと状態を取得することができました。



ONION software Copyright 1997-2023(c) All rights reserved.