WPF アプリケーションからショートカットキーで単語登録ツールを開くと、クリップボード上のテキストが単語登録ツールに送信される

こんにちは、Platform SDK (Windows SDK) サポートチームです。
今回は、WPF アプリケーションから Ctrl + F7 のショートカットキー経由で、単語登録ツール (IMJPDCT.EXE) を開いたときの問題についてご案内します。

 

現象

WPF アプリケーション上で、TextBox や RichTextBox コントロール上の任意のテキストを選択し、Ctrl + F7 のショートカットキー経由で単語登録ツールを開くと、選択しておいたテキストではなく、クリップボード上のテキストが単語登録ツールに送信される現象が発生します。
この現象は、WPF アプリケーション上でのみ発生することが確認されています。

 

原因

本現象は、ショートカットキー経由で単語登録ツールを開いたときに、単語登録ツールに送信するためのテキストを取得する OS の内部処理に問題があるために発生しています。
ショートカットキー以外の方法で単語登録ツールを開いた場合は、異なる内部処理によってテキストが取得されるため、本現象は発生しません。

マイクロソフトでは、この現象について現在も調査中です。
詳細や、将来のバージョンでの対応計画については、わかり次第このブログに掲載する予定です。

 

回避策

回避策として、以下の方法が確認されています。

  • 方法 (1)
    IME ツールバーから [単語の登録] を選択して、単語登録ツールを開きます。
  • 方法 (2)
    単語登録ツールに割り当てられているショートカット キーが押されたことを WPF アプリケーション側で検出して、一旦キャンセルします。
    そして、WPF アプリケーションから InputMethod.ShowRegisterWorkUI() を呼び出して、独自に単語登録ツールを開きます。
    このとき、InputMethod.ShowRegisterWorkUI() の第一引数には単語登録ツールに渡したい任意のテキストを指定することになるため、選択しておいたテキストをアプリケーションが取得して渡すことで、目的の動作を実現できます。