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() の第一引数には単語登録ツールに渡したい任意のテキストを指定することになるため、選択しておいたテキストをアプリケーションが取得して渡すことで、目的の動作を実現できます。