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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0129
kamepIMEの入力モード取得3解決


kamep

リンク

2012/1/29(Sun) 15:46:37|NO.44591

IMEの入力モードの取得をしたいと思い、過去ログ等を調べてスクリプトを組み
半角カタカナ=19
全角英数 =24
ひらがな =25
全角カタカナ=27
というのは検出できたのですが、半角英数が検出できませんでした。

Microsoft IME
Microsoft Office IME 2007
Baidu IME
どれも試してみましたが、どれも検出できませんでした。
何が原因になっているのか教えてください。


下記のスクリプトで上記の結果が検出できました。
掲示板に載せるため、内容を色々と省略しています。
半角/全角/漢字ボタン等を押すことで入力モードを変更できます。


#uselib "imm32.dll" #func ImeStat "ImmGetConversionStatus" sptr,var,var #cfunc ImeContext "ImmGetContext" sptr himc=ImeContext(hwnd) *Key cls ImeStat himc,Inp,Mode mes "入力モード:" :pos 8*11,0 switch Inp case 16 :mes "半角英数" :swbreak case 19 :mes "半角カタカナ" :swbreak case 24 :mes "全角英数" :swbreak case 25 :mes "ひらがな" :swbreak case 27 :mes "全角カタカナ" :swbreak swend oncmd *Key,0x100 oncmd *Key,0x201



この記事に返信する


Cookies

リンク

2012/1/29(Sun) 17:17:34|NO.44593

あれは半角英数モードというか、IMEが閉じた状態ですから少し違うんですね。

#cfunc ImmGetOpenStatus "ImmGetOpenStatus" sptr mes ImmGetOpenStatus(himc)
という感じで取得できるようです。http://msdn.microsoft.com/ja-jp/library/cc448004.aspx
オンなら1,オフなら0。
himcはそのまま使えるようで。

Imeで始まる関数とImmで始まる関数って何が違うんでしょ。



kamep

リンク

2012/1/29(Sun) 17:43:34|NO.44594

ありがとうございます
半角英数モードと他のモードは元が違うんですね。

私のスクリプトの中にあるImeで始まる関数は、
単にImmだと分かりにくかったのでImeにしただけなので、元はImmです。
失礼しました。



Cookies

リンク

2012/1/29(Sun) 18:58:49|NO.44596

あ、ほんとだ。
関数名違ったんですねw



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