掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IME辞書に「テキストファイルからの登録」をプログラムでする方法は? (ID:81496)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
プログラミングすることは可能です。 IMEのAPI関数はOSによって動作するものと動作しないものとがあるので とくに98系は動作しないものがあります。Win2000ならほぼ問題なく動作 すると思います。 サンプルプログラムが、はたして直立エン人さんの環境で動くかどうかは わかりません。 一応、私の環境は Win2000sp2 VB6 です。一応この環境でサンプルプログラムを作成して動作確認は取れました。 サンプルプログラムをフォームにはっつけて実行してみてください。 'サンプルプログラム Option Explicit Private Const STYLE_DESCRIPTION_SIZE = 32 Private Type STYLEBUF dwStyle As Long 'APIビューワでは、szDescriptionはString型となってるけど '私の環境でString型としちゃうとアプリが飛んでしまう。 'なのでByte型配列にしてます。 szDescription(31) As Byte End Type Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long Private Declare Function ImmGetRegisterWordStyle Lib "imm32.dll" Alias "ImmGetRegisterWordStyleA" (ByVal hKL As Long, ByVal nItem As Long, lpStyleBuf As STYLEBUF) As Long Private Declare Function ImmRegisterWord Lib "imm32.dll" Alias "ImmRegisterWordA" (ByVal hKL As Long, ByVal lpszReading As String, ByVal dwStyle As Long, ByVal lpszRegister As String) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private hKL As Long Private rc As Long Private Sub Form_Load() '設定可能なスタイル(品詞)を取得 Call GetStyle(colStyle) 'ファイルから単語登録 TangoTourokuFromFile End Sub '---------------------------------------- 'ファイルから単語登録する関数 '---------------------------------------- Private Sub TangoTourokuFromFile() Dim colStyle As New Collection Dim strYomi As String Dim strKanji As String Dim strStyle As String Dim strLineData As String Dim varData As Variant '登録するファイルを開く 'IMEのフォーマットに従い '1行のデータは '読み[タブ]漢字[タブ]スタイル(品詞) 'としています。 'あと、IMEが出力する単語リストのテキストファイルの最初には、 'ツール名やバージョンやらがありますが、このプログラムでは '1行目から登録データがあることとしています。 'もし、IMEが出力するテキストファイルも扱いたい場合は、調整してください。 Open "C:\output1.txt" For Input As #1 While Not EOF(1) Line Input #1, strLineData varData = Split(strLineData, vbTab) 'わざわざそれぞれ変数に入れなおさなくても,varDataを直接使ってもいいでつ strYomi = varData(0) strKanji = varData(1) strStyle = varData(2) rc = ImmRegisterWord(hKL, strYomi, colStyle(strStyle), varData(1)) Wend End Sub '---------------------------------------- '設定可能なスタイルを取得する関数 '---------------------------------------- Private Sub GetStyle(colStyle As Collection) Dim stlBuff() As STYLEBUF Dim num As Long Dim cnt As Long 'とりあえず0で定義する ReDim stlBuff(0) 'キーボードレイアウトを取得 hKL = GetKeyboardLayout(0) '第2引数のスタイル数を設定するところに0を設定して実行すると '戻り値にスタイル数が返ってくるのね num = ImmGetRegisterWordStyle(hKL, 0, stlBuff(0)) 'んで、取得したスタイル数を元にSTYLEBUFF構造体配列を再定義 ReDim stlBuff(num - 1) '改めて、スタイル数を設定して実行し、STYLEBUFF構造体配列に情報を取得します。 '取得されるのはスタイル値と、スタイル名称の2つ rc = ImmGetRegisterWordStyle(hKL, num, stlBuff(0)) 'スタイル名称からスタイル値が求められるように、コレクションオブジェクトに登録します。 For cnt = 0 To num - 1 colStyle.Add stlBuff(cnt).dwStyle, StrConv(stlBuff(cnt).szDescription, vbUnicode) Next End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.