from electron 2 web

インターネットのリソースを無駄遣いして検索におけるUXを下げてごめんなさい

圧倒的文章力のNASAでゴミみたいなチラ裏のようなメモを量産してしまい全ての"Web開発者"にごめんなさい

windows環境におけるime作成方法(2018年版)

win ime界隈情報が古すぎて情報止まってるのでアップデートしておく。

入門とか現在どうなってるかとかは別の記事にまとめる予定なのでとりあえずサンプルコンパイルして動かすまで。

まずwin imeはけっこう変化が激しくてimm32とかtsfとかwpfとかuwpとか出てくる。

windows 7,vista,8,10によってなんか微妙に違ったりするらしい。

でも基本的にはどのプラットフォームでもtsfでime作成が可能。

基本的にtsfによるime作成はコンパイルしてできた特殊なdllをregsvr32 hoge.dllで登録することでimeとして登録できる。 regsvr32とあるが64bit osでも可。

visual studio2015を入れればとりあえず動いたのでvs2015を入れる。

win7で動くサンプルの作り方

nyaruru大先生のサンプルを使うがvista用なのでwin7での手順を以下に示す

nyaruru.hatenablog.com

Windows SDK Kit for Windows Vista and .NET Framework 3.0 Runtime Componentsも Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1も サンプルの内容としては特に変わらないので下記サイトから取得してインストールする。

Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 Download Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 from Official Microsoft Download Center

ちなみにMicrosoft Windows SDK for Windows 7 and .NET Framework 4でもサンプルは動くのでそちらでもおk。

次にvisual studio 2015をインストール。vs2015はオプションの選択とか無いので入れるだけ。12GB・・・

環境が整ったらnyaruru師匠のブログに戻りサンプルプロジェクトをダウンロード。

本当にありがとうございます・・・

Visual C++ 2005 用のプロジェクトファイルを置いておきますのでご活用くださいませ.
http://www.dwahan.net/nyaruru/hatena/winui-tsfproj.zip

zipを好きな場所に展開すると以下のようになる

f:id:lv7777:20180128095144p:plain

その後windowssdkのサンプルソースファイルをtsfappとかの対応するフォルダにコピーする

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winui\tsf\tsfappとかのソースファイルを展開したプロジェクト\tsfappにコピー

すると以下のような感じになる

f:id:lv7777:20180128095404p:plain

んでvs2015でさっきのプロジェクト(winui.sln)を開いてtsfappをビルドする。

コケなければreleaseやdebugフォルダにexeができるはずなのでそれをクリックすればTSFに対応したエディタが作成できる。

でも違うんだよなぁ私が作りたいのはエディタじゃなくてimeなんですがって人は同じようにソースをコピってtsfcaseをビルドする。

そうするとTSFCase.dllがなぜか展開した最上位のreleaseにできたのでそれをregsvr32 TSFCase.dllで登録

こんなんでましたけど~

f:id:lv7777:20180128105623p:plain

管理者権限Windows SDK 7.1 Command Prompt(文字が黄色いヤツ)を開いてregsvr32 TSFCase.dll

再登録時にはregsvr32 /u TSFCase.dllした後に登録。

DllRegisterServer への呼び出しはエラーコード 0x8002801c により失敗しました。

以下のようなサンプルができる。やったぜ。

f:id:lv7777:20180128100726p:plain

win10で動くサンプルのビルド

Windows-classic-samples/Samples/IME at master · Microsoft/Windows-classic-samples · GitHub

上記githubのサンプルはwin8用と書かれているが普通にwin10でも動きそう。

でも私が動かしたのはこれ。

Windows Input Method Editor (IME) sample in C++ for Visual Studio 2010

これもvs2010用と書いてあるが同じように2015で開いてビルドする。(ターゲットはwin10だけどwin7でビルドしてもおk)

もしoverflowがなんとかって言っていたらwarningをerrorとして扱うコンパイルオプションを無効化して再度ビルド。

まぁそれがダサいっていうならwarning箇所のboolをintに治せば一応すべてのwarningは消えるはず。

でビルドは成功したけどエラーでた旨のメッセージが出るからガン無視してreleaseに入っているsampleime.dllとかsampleime.expとかすべてwin10にコピーする。

win10でregsvr32 sampleime.dllを実行すれば登録されるはず。

以下のようになる

f:id:lv7777:20180128102033p:plain

オワリ。

win imeは環境構築がくそめんどい。vs重いしwinsdkとか.netとかよくわからんし。

でもlinuxime(ibus)は必要知識多いからなぁ・・・

ime界隈は結局どちらもめんどくさいけどlinuxのほうがスッと始めれるので私はlinuxから入ることをおすすめするよ

まぁその辺のお話は別の記事(IME自作界隈入門の入門)で。