辞書管理プログラムを起動してテキストファイルからの
単語登録/削除をやらせる処理をsendkesで自動化
しようとしています。
ここで問題となるのが、入力する単語のテキストフ
アイルサイズで毎回タイミングが変わる、
終了確認ボタンに対するkey(CRキー)の送信
タイミングです。
長めに設定したsleepでは芸がないので。
そこで、このような、アプリ画面内に出力される
(ダイアローグボタン)の出現タイミングを検出できない
ものでしょうか?
ボタンの中には文字メッセージが表示されているので、
その文字も判別してsendkesを実行できたら最高です。
中断メツセージのボタンが途中で表示されるのを無視して、
終了確認ボタンにのみ押したいからです。
宜しくお願い致します。
EnumWindowsなどで
キャプションタイトルやクラスの名前を取得して
判別してみたらいかがでしょうか?
連続ですいません。
FindWindowEXの方が使いやすいかと思いました。
Windows 32 SDK的にいえば、CBTHookを使うことで可能でしょう。
しかし、VB6では、そのままでは使えません。
その辞書管理ソフトに、APIがないかどうか調べるのが無難かと。
APIの単語登録を試行しみたのですが、単語登録関数の戻り値は成功しているのに、内部エラー(起動パラメータが違うというエラーボタンがでる)になります。
IME_REGWORD_USER_FIRST(=&H80000000)から
IME_REGWORD_USER_LAST(=&HFFFF)の範囲 IMEが管理するプライベートなスタイル
品詞は、以下のようにゲットできるのですが、上の範囲とどういう演算
をして使用すればよいのかわかりません。
rc = ImmRegisterWord(hKL, "ににに", 2, "源氏テスト")
1 接続なし
2 一般名詞
3 姓
4 名
5 地名
6 サ変名詞
7 形容動詞
8 副詞
9 一般名詞
10 サ変名詞
11 姓
12 名
13 地名
14 組織名
15 役職名
16 人物
17 文書
18 地名(市町村つき)
19 建築物
20 乗り物
21 飲食物
22 衣料・装飾品
23 植物
24 動物
25 カ行五段
26 ガ行五段
27 サ行五段
28 タ行五段
29 ナ行五段
30 バ行五段
31 マ行五段
32 ラ行五段
33 ワ行五段
34 ハ行四段
35 サ変
36 ザ変
37 一段
38 ク活用形容詞
39 シク活用形容詞
40 接続なし
41 形容動詞
42 副詞
43 接続詞
44 連体詞
45 感動詞
46 冠数詞
47 擬態語
48 接頭語
49 接尾語
50 単位
51 数詞
52 名詞△各
53 サれ名△各
IMEなのだから、Windows APIより IME APIですよね。
例えばIME2003ならば、IFEDictionaryインターフェースについて
調べてみるとか。
# まぁ、面倒そうに見えますね。
これは使えませんかね。
http://madia.world.coocan.jp/vb/vb_bbs/200401_04010071.html
こちらも放置しないようにお願いします。
http://okwave.jp/qa2514906.html
http://www2.moug.net/bbs/program/20061102000004.htm
これは使えませんかね。
http://madia.world.coocan.jp/vb/vb_bbs/200401_04010071.html
はい、これを使って品詞のゲットまでは成功なのですが、得られた品詞番号を
使うと、関数の戻り値は成功なのに、内部でパラメータが違うとかのエラー
がでるのですよ。
ここを見つけた時はうれしかったです。相当レベルの高い人がいるみたいなの
で。
IME_REGWORD_USER_FIRST(=&H80000000)から
IME_REGWORD_USER_LAST(=&HFFFF)の範囲 IMEが管理するプライベートなスタイル
との関係がよく分からないのです。
OAKという富士通のマイナなFEPです。
それには、まず、OAKのAPIを調べる必要があるのでは。
>それには、まず、OAKのAPIを調べる必要があるのでは。
富士通に訊いたら、14万のOASYS開発キットを買ってくれ、
といわれてあきらめました。
APIは汎用的かと考えていたのですが、違いますね。
たとえば、不思議なことに、Win2000上だと、MS−IME
で上の方法で普通に単語/登録削除が可能なのに、XP上だとだめ
なのです。
カーネルは2000で外部のVMS関係のprofessionalの開発者の力で
本物なったが、GUI関係とか周辺のAPIモジュールのMS
の開発スキルは低いのではないかと疑われます。
英語圏の彼らにとってFEPなんて関係ないしね。
API = Application Programming Interface
ですから、作成者による汎用性の模索、とでも言えるでしょう。
この程度の情報で14万を払わなければいけないというのも
ナンセンスに思いますが、これで汎用的でないと言い切るのも
ナンセンスではないかと。
そちらを諦めるというのならば、元の方法に戻って、それこそ
他言語でDLLを作るなどしてCBTHookができないか検討してみては。
んで、MSIME関連ですが、XP辺りからは、先に提示した
IFEDictionaryインターフェースなどを使うようになっていると
MSDNに書いてありますよ。ですから開発スキルを云々言うのも
ナンセンスかと。敢えて言うのならば仕様の一貫性が保たれて
いるかどうかを問うべきですよね。
みなさん、ご協力有り難うございました。
自分のレベルを超えたスキルが必要みたいなので、
とりあえず現状のまま使用することにしました。
掲示板のゴミにならないように、
感謝を込めて一旦閉じさせていただきます。
ツイート | ![]() |