none
TabTipのキーボード切替について RRS feed

  • 質問

  • Windows8.1(タブレットPC)からTabTipのキーボードの切替を行う方法が見つからず困っております。
    因みに、.NET Frameworkは4.5にて進めています。

    現在、以下のコマンドでTabTipを起動し、

    ----------------------------------------------------------------------------------------------
     Process.Start("c:\\program files\\common files\\microsoft shared\\ink\\tabtip.exe");
    ----------------------------------------------------------------------------------------------

    TapTip.exeの格納先にある"Microsoft.Ink.DLL"をプロジェクトの参照設定に追加して

    ----------------------------------------------------------------------------------------------
     using Microsoft.Ink;
     using Microsoft.Ink.TextInput;

            private static TextInputPanel tip;

      tip = new TextInputPanel(); // 引数に入力コントロール指定するべき?
      ListBox.Items.Add(string.Format("KeyboardDefault : {0}", tip.DefaultInputArea));
      ListBox.Items.Add(string.Format("KeyboardCurrent : {0}", tip.CurrentInputArea));
    ----------------------------------------------------------------------------------------------

    DefaultInputAreaプロパティ、CurrentInputAreaプロパティのPanelInputArea 列挙体の値の"Auto"
    までは取得出来ていますが、CurrentInputAreaプロパティがReadOnlyの為、設定出来ません。
    また、DefaultInputAreaプロパティは、設定は出来ますが、それをTabTipへ反映する方法が
    判らないままです。(設定出来る事から切替可能と思ったのですが)

    有効な情報を見つけられなかったので、ご教授下さい。

    2015年6月29日 11:29

回答

  • Windows8.1のTabtipキーボードはTextInputPanelでは操作できないみたいです。
    CurrentInputAreaやDefaultInputAreaがAutoと読めるのは初期値がAutoだからだと思います
    #Windows7だと操作できるのは確認できたんですが...

    検索したら代わりの方法がありました
    レジストリの
     (誤) HKCU\Software\Microsoft\Tablet\Tip\1.7
     (正) HKCU\Software\Microsoft\TabletTip\1.7
    以下に設定があり、KeyboardLayoutPreferenceを0~2でキーボードレイアウト、LastUsedModalityWasHandwritingを0~1で手書きの切り替えみたいです。
    レジストリをプログラムから書き換えて、Tabtipのプロセスを殺して再起動させることでレジストリを読み込ませて反映させてるようです。
    #Windows7のTextInputPanelの場合でもSetInPlaceVisibilityで一度消さたいと反映されないので似たようなものかもしれないです。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク karaka1963 2015年6月30日 7:14
    • 回答としてマークされていない karaka1963 2015年6月30日 7:15
    • 回答としてマーク karaka1963 2015年6月30日 7:18
    • 編集済み gekkaMVP 2015年6月30日 10:46 レジストリのパスを間違えていたのを訂正
    2015年6月29日 17:21

すべての返信

  • Windows8.1のTabtipキーボードはTextInputPanelでは操作できないみたいです。
    CurrentInputAreaやDefaultInputAreaがAutoと読めるのは初期値がAutoだからだと思います
    #Windows7だと操作できるのは確認できたんですが...

    検索したら代わりの方法がありました
    レジストリの
     (誤) HKCU\Software\Microsoft\Tablet\Tip\1.7
     (正) HKCU\Software\Microsoft\TabletTip\1.7
    以下に設定があり、KeyboardLayoutPreferenceを0~2でキーボードレイアウト、LastUsedModalityWasHandwritingを0~1で手書きの切り替えみたいです。
    レジストリをプログラムから書き換えて、Tabtipのプロセスを殺して再起動させることでレジストリを読み込ませて反映させてるようです。
    #Windows7のTextInputPanelの場合でもSetInPlaceVisibilityで一度消さたいと反映されないので似たようなものかもしれないです。


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク karaka1963 2015年6月30日 7:14
    • 回答としてマークされていない karaka1963 2015年6月30日 7:15
    • 回答としてマーク karaka1963 2015年6月30日 7:18
    • 編集済み gekkaMVP 2015年6月30日 10:46 レジストリのパスを間違えていたのを訂正
    2015年6月29日 17:21
  • gekkaさん、貴重な情報ありがとうございます。

    早速、試してみます。結果は後ほど記します。

    2015年6月29日 23:51
  • Gekkaさん

    確かに動作致しました。今まで検証に時間が掛かっていたのは、HKEY_CURRENT_USER\Software\Microsoft\TabletTip\1.7のレジストリキーの名称を間違えていたのに気付かなかったのと、TabTipのプロセス終了に手間取っていた為です。

    因みにプロセス終了に、最初はAPIのFindWindow関数とSendMessage関数を使っていたのですが、すべて終了出来ない為に"切替"出来ないのでProcessクラスですべてのプロセスを取得後、対象の"TabTip"をKillする事ですべて終了出来ました。最初から起動と同じクラスを使うべきでした。

    この度は大変ありがとうございました。今後も宜しくお願いします。

    2015年6月30日 7:14
  • ”回答としてマーク”の使い方が間違っていましたら、御一報ください。
    2015年6月30日 7:21