アプリケーションから、インタフェースを呼び出すには、次の2つの条件を満たしている必要があります。
アプリケーションで使用するIMEとして、Charset-入力アシストが選択されていること
PUBLIC1インタフェースのサポート情報取得で、0以外が返されること
[条件(1)]は、WindowsのAPIを使用して次の手順で判定します。
GetKeyboardLayoutを呼び出して、アプリケーションのスレッドで使われているキーボードレイアウトを取得(hKLに格納)
ImmGetIMEFileNameを呼び出してIMEのファイル名を取得
なお、Imm~~のAPI呼出しには、Windowsのヘッダーファイルimm.hをインクルードして、imm32.libをリンクする必要があります。
Charset-入力アシストのファイル名:「FJCM090.IME」
[条件(2)]は、ImmEscape APIを使用して間接的にCharset-入力アシストを呼び出すことで実現します。
アプリケーションのスレッドでCharset-入力アシストが使用されていない場合には、Windowsの一部であるIMMによって使用中のIMEに処理が渡されるため、Charset-入力アシストは応答しません。
Charset-入力アシスト以外のIMEの場合は、不用意にImmEscapeを呼び出さないでください。また、必要があれば、アプリケーションからCharset-入力アシストを選択することは許されています。
ImmEscape APIによるインタフェースで、本ドキュメントで扱うものをPUBLIC1インタフェースと呼びます。PUBLIC1インタフェースは、すべて次の呼出し手順で実現されます。
【PUBLIC1インタフェースの呼出し】
//制御インタフェース構造体(4バイトalignment) typedef struct _tFjiEscapeParamTag{ DWORD dwMainFunc; //メイン機能種別 DWORD dwSubFunc; //サブ機能種別 DWORD dwOption; //追加情報 LPVOID lpPointer; //ポインター型パラメータ } FJI_ESCAPE_PARAM; #include <imm.h> //←IME_ESC_PRIVATE_FIRSTなどを定義してある。 #define FJI_ESCAPE_PUBLIC1 (IME_ESC_PRIVATE_FIRST+23)
//PUBLIC1インタフェース ImmEscape(HKL hKL, HIMC hIMC, FJI_ESCAPE_PUBLIC1, FJI_ESCAPE_PARAM *lpFjiEscParam);
戻り値はLONG型です。戻り値が0の場合は、インタフェースとして実装されていないことを意味します。インタフェースとして正しく応答する場合は、エラーであってもかならず0以外の値を返します。
分類 | 機能 | dwMainFunc | 値 |
---|---|---|---|
制御インタフェース | バージョン情報の取得 | 0x0001 | |
製品名の取得 | 0x0002 | ||
サポート情報の取得 | 0x0003 | ||
環境設定アプリ制御インタフェース | 一時動作環境の取得 | 0x0004 | |
一時動作環境の設定 | 0x0005 | ||
標準動作環境の取得 | 0x0006 | ||
標準動作環境の設定 (*1) | 0x0007 | ||
辞書管理インタフェース | 辞書ファイル設定の取得 | 0x000E | |
辞書ファイル設定の取得(Unicode) | 0x0015 | ||
辞書ファイル設定の設定 | 0x000F | ||
辞書ファイル設定の設定(Unicode) | 0x0016 | ||
辞書ファイル設定の切替え | 0x0010 | ||
優先辞書切替え状態の取得 | 0x0018 | ||
優先辞書切替え | 0x0019 | ||
入力用マスタコード系の取得 | 0x001A | ||
入力用マスタコード系の切替え | 0x001B | ||
マルチボード制御インタフェース | マルチボード状態問い合わせ | 0x0011 | |
マルチボード表示/消去 | 0x0012 | ||
マルチボード入力方式切替 | 0x0013 | ||
情報検索インタフェース | フォルダ情報取得 | 0x0014 | |
フォルダ情報取得(Unicode) | 0x0017 |
*1:整合性レベル低で動作している場合には、戻り値として0が得られます。