概要
Microsoft IME の変換候補を自作アプリで取得することができます。
キオスク端末や IME が小さくて使いずらい場面で有効です。
環境
- Windows 11 Home
- .NET Framework 4.5
- 以前のバージョンの Microsoft IME を使用設定
.NET Framework 4.8 と .NET Standard 2.0 でも動作を確認
テストコード
下記の NuGet をプロジェクトにインポートします。
ほとんど使用実績がないライブラリのようなので、信頼性は不明です。
自己責任でお願いします。
あとは、下のコードのように実装すれば変換結果を取得できます。
コンソールアプリで書いているので、ほかで使うときは GetCandidates() メソッドだけ使えばいいです。
using System;
using System.Threading.Tasks;
using TSF;
namespace TSF_Test
{
internal class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("変換候補を取得したい文字列を入力してください");
var input = Console.ReadLine();
var candidates = GetCandidates(input);
Console.WriteLine();
Console.WriteLine("変換候補:");
foreach (var item in candidates.Result)
{
Console.WriteLine($"{item}");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
/// <summary>
/// 変換候補を取得します
/// </summary>
/// <param name="value"> 変換候補を取得したい文字列 </param>
/// <returns> 変換候補一覧 </returns>
private static async Task<string[]> GetCandidates(string value)
{
using (var provider = await SearchCandidateProvider.FromCurrentProfile())
{
// 以前のバージョンの Microsoft IME を使用しないと null が返る
if (provider == null)
{
throw new Exception("変換候補プロバイダが見つかりません");
}
var candidates = await provider.GetSearchCandidates(value);
return candidates.Candidates;
}
}
}
}
実行結果のスクリーンショット
ちゃんと変換結果が取得できていますね。
そのまま返ってくるものや予測変換も混ざっているので、用途によってはフィルターをかけてもいいかもしれません。
小話
日本語変換についての分かりやすい情報がさっぱり無かったので書きました。
ここまで情報を探るのに Mozc などに寄り道して3日もかかってしまいました。
いつかこの情報が誰かの役に立つことを祈ります。
最後に、ライブラリ作成者の NyaRuRuさん に感謝を。