# Project SKKGate.rb # encoding: cp932 # サンプル1 - 変換・確定・削除の処理の雛形 myself = 0 # 自分のゲート番号 (ゲート0: フロントエンドからの要求) target = 1 # 接続先ゲート番号 (ゲート1: 辞書プロセスへの処理依頼) require 'win32ole' Gate = WIN32OLE.new('SKKGate') def Gate.method_missing(name, *args) super(name, *args.map { |arg| WIN32OLE_VARIANT.new(arg) }) end # メイン while 1 # 待機 id = Gate.Sync(myself, 1) # 終了 (停止要求 -1 / 二重起動 -2) if id < 0 if id == -2 puts "停止します" Gate.Sync(-1, myself) end break end index = Gate.Get() cand = Gate.Get(1) attr = Gate.Get(2) case id # 変換 when 0 result = Gate.Search(index, attr, target).split(/\x03/) result.each { |one| Gate.Put(one) } # 補完 when 1 result = Gate.Abbrev(index, attr, target).split(/\x03/) result.each { |one| Gate.Put(one) } # 確定 when 2 Gate.Update(index, cand, attr, target) # 削除 when 3 Gate.Delete(index, cand, attr, target) # # 予約 # else # Gate.Exec(target) end end