########################### # autoregist_IME2002.mscr # # author: tok # ########################### #################### # 変更する必要なし # #################### atok = "ATOK 辞書ユーティリティ" atokexe = "\Windows\ATOKPUT.exe" toroku = "単語登録" ######################## # 環境によって変更して # ######################## # 辞書に登録する内容が記載されたテキストファイルの場所 fname = "\dic.txt" # 全体的な動作速度(重くて正常に動作しないときは増やしてみる) wait = 100 # IME2002に存在する品詞の羅列 hinsi[1] = "名詞" hinsi[2] = "形容詞" hinsi[3] = "形容動詞" hinsi[4] = "副詞" hinsi[5] = "連体詞" hinsi[6] = "接続詞" hinsi[7] = "感動詞" hinsi[8] = "接頭語" hinsi[9] = "接尾語" hinsi[10] = "さ変名詞" hinsi[11] = "ざ変名詞" hinsi[12] = "形動名詞" hinsi[13] = "副詞的名詞" hinsi[14] = "さ変形動名詞" hinsi[15] = "人名" hinsi[16] = "姓" hinsi[17] = "名" hinsi[18] = "地名その他" hinsi[19] = "固有名詞" hinsi[20] = "あわ行五段" hinsi[21] = "か行五段" hinsi[22] = "が行五段" hinsi[23] = "さ行五段" hinsi[24] = "た行五段" hinsi[25] = "な行五段" hinsi[26] = "ば行五段" hinsi[27] = "ま行五段" hinsi[28] = "ら行五段" hinsi[29] = "一段動詞" hinsi[30] = "姓名接頭語" hinsi[31] = "地名接頭語" hinsi[32] = "姓名接尾語" hinsi[33] = "地名接尾語" hinsi[34] = "助数詞" hinsi[35] = "顔文字" hinsi[36] = "その他自立語" hinsi[37] = "慣用句" hinsi[38] = "独立語" hinsi[39] = "抑制単語" # IME2002に存在する品詞の総数 hinsiMAX = 39 # IME2002の品詞(上記hinsi[x])とATOKの品詞(下記)を関連付ける # 例1:hinsi[2]はIME2002で形容詞であり、下記からATOKの品詞を探すと # 30:形容詞があるので、down[2] = 30 とする。 # 例2:hinsi[16]はIME2002で姓であり、下記からATOKの品詞を探すと # 姓は無いが、1:固有人名が近いと思われるので、down[16] = 1 とする。 # ATOKの品詞 # 0:一般名詞 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:副詞 down[1] = 0 down[2] = 30 down[3] = 31 down[4] = 32 down[5] = 10 down[6] = 11 down[7] = 12 down[8] = 13 down[9] = 14 down[10] = 5 down[11] = 6 down[12] = 7 down[13] = 0 down[14] = 28 down[15] = 1 down[16] = 1 down[17] = 1 down[18] = 2 down[19] = 4 down[20] = 25 down[21] = 16 down[22] = 17 down[23] = 18 down[24] = 19 down[25] = 20 down[26] = 21 down[27] = 23 down[28] = 24 down[29] = 26 down[30] = 13 down[31] = 13 down[32] = 14 down[33] = 14 down[34] = 15 down[35] = 0 down[36] = 9 down[37] = 8 down[38] = 8 down[39] = 0 # ここから登録処理開始 Message("単語の登録を開始します") If(WndExists(toroku) = 1) Close(toroku) Sleep(3000) EndIf If(WndExists(atok) = 1) Close(atok) Sleep(3000) EndIf Run(atokexe); # 既に登録している単語が多くて正常に動作しないとき、 # ここのSleep値を10000〜に変更するとうまくいくかも Sleep(3000) f = ReadFile(fname) ForEach line in split (f, "^LF^", 1) Split (line, "^TAB^", 1, item) WaitForActive(atok, 3) If(WndActive(atok) = 0) Message("異常な動作を検出したので終了します") Exit EndIf SendLeftSoft(atok) Sleep(wait) SendCR(atok) WaitForActive(toroku, 3) If(WndActive(toroku) = 0) Message("異常な動作を検出したので終了します") Exit EndIf SetClipText(item[2]) SendCtrlKey(toroku, "v") Sleep(wait) SendTab(toroku) Sleep(wait) SetClipText(item[1]) SendCtrlKey(toroku, "v") Sleep(wait) SendTab(toroku) Sleep(wait) s = 1 While((item[3] ne hinsi[s])) s = s + 1 If(s >= hinsiMAX + 1) Message("未登録の品詞を検出したので終了します") Exit EndIf EndWhile If(down[s] > 0) SendCR(toroku) Sleep(wait) Repeat(down[s]) SendDown(toroku) Sleep(wait) EndRepeat EndIf SendTab(toroku) Sleep(wait) If(WndActive(toroku) = 0) Message("異常な動作を検出したので終了します") Exit EndIf SendCR(toroku) EndForEach Close(atok) Message("単語の登録が完了しました")