Windows 10 RS5にてWPFアプリの読み取り専用Textボックスにタッチした場合の挙動について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 version 1809 (October 2018 Update) において、WPF アプリケーションの読み取り専用TextBoxをタッチすると、入力不要なコントロールに対してタッチキーボードが起動してくる事象についてご案内します。 前提条件 ・キーボードがドッキングされていないタブレット端末 ・OSの設定にて、「設定」-「デバイス」-「入力」の「タブレットモードでなく、キーボードが接続されていない場合に、タッチキーボードを表示する」 が 「オン」 となっている。 現象 WPFアプリケーションで、読み取り専用の TextBox(IsReadOnly プロパティを TRUEに設定)をタッチすると 読み取り専用にもかかわらず、タッチキーボードが表示される、または、タッチキーボードの表示後すぐ閉じると事象が確認されています。 状況 マイクロソフトではこの現象を調査中です。 進展があり次第、本ブログを更新予定です。 回避策 現時点では、Windows 10 version 1809 における回避策はありません。


Windows 10 RS5にてWPFアプリで不要なタイミングでタッチキーボードが起動してきてすぐに閉じる

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 version 1809 (October 2018 Update) において、WPFアプリケーションのTextBoxを非表示にすると、タッチキーボードが起動して、すぐ閉じる事象についてご案内します。   前提条件 ・キーボードがドッキングされていないタブレット端末 ・OSの設定にて、「設定」-「デバイス」-「入力」の「タブレットモードでなく、キーボードが接続されていない場合に、 タッチキーボードを表示する」が 「オン」 となっている。 現象 WPFアプリケーションでTextBoxを非表示にするような実装を行った場合、タッチキーボードが起動して、すぐに閉じるという事象が確認されています。 具体的には、以下のような操作を行うと事象が発生します。 <発生手順例> 1.TextBox が配置されたWPFアプリケーションを起動します。 2.TextBox をタッチして、タッチキーボードを表示後、×ボタンを押してタッチキーボードを閉じます。 3.プログラムによりキーボードフォーカスを別のコントロールに移す、またはTextBoxのVisibilityプロパティをCollapsedに変更します。 状況 マイクロソフトではこの現象を調査中です。 進展があり次第、本ブログを更新予定です。


Windows 10 RS5にてクリップボード履歴画面を表示後にタッチキーボートが起動してこない

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 version 1809 (October 2018 Update) において、タッチキーボードから 「クリップボードの履歴画面」を表示した後、タッチキーボードが表示されなくなる事象についてご案内します。   現象1 クリップボード履歴画面を表示すると以降タッチキーボートが起動してこなくなる クリップボード履歴画面を表示すると以降タッチキーボートが起動してこなくなるといった事象が確認されています。 具体的には、以下のような操作を行うと事象が発生します。 <発生手順例> 1.キーボードがついていないタブレット端末にて、アプリからタッチキーボードを表示させるために “C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe”をShellExecuteExにて起動し、タッチキーボードを起動させます。 (タスクトレイの「タッチキーボードボタン」をタッチしてタッチキーボードを起動して場合も同様です。) 2.タッチキーボード上の左上のクリップボードの履歴画面に切り替えるボタンをタッチし、クリップボードの履歴画面を表示させます。 3.メモ帳を開きタッチしても、タッチキーボードが起動してきません。 4.TabTip.exeを実行しても、タッチキーボードが起動してきません。 回避策 タスクバー上のタッチキーボードのアイコンをタッチすることで、タッチキーボードが起動します   現象2 タッチキーボードからクリップボードの履歴画面を表示すると一度アプリからフォーカスを外さないとタッチキーボードが起動してこない タッチキーボードからクリップボードの履歴画面を表示すると一度アプリからフォーカスを外さないとタッチキーボードが起動してこないという事象が確認されています。 具体的には、以下のような操作を行うと事象が発生します。 <発生手順例> 1.文字入力ができるアプリを起動して最大化表示にしておきます。(メモ帳でも現象は発生を確認しております) 2.アプリの入力エリアをタッチし、タッチキーボードを起動させます、 3.タッチキーボードの左上のボタンを押してクリップボードの履歴画面を表示します。 4.クリップボードの履歴画面を閉じます。 5.再びアプリの入力エリアをタッチしても、タッチキーボードが起動してきません。 回避策 一度デスクトップをタッチした後に再度アプリの入力エリアをタッチすることで、タッチキーボードが起動します。 状況 マイクロソフトではこの現象を調査中です。 進展があり次第、本ブログを更新予定です。


TryShowPrimaryView メソッドを実行してもタッチ キーボードが表示されない

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、CoreInputView クラスを利用した、アプリケーションからタッチ キーボードを制御する際の不具合についてご案内します。 現象 Windows 10 version 1803 (RS4) において、フォアグラウンドにいるアプリケーションが CoreInputView.TryShowPrimaryView メソッドを実行しても、入力に使用するためのタッチ キーボード (Input Pane) を表示できません。 詳細 本来、以下のみっつの条件をすべて満たす場合、UWP アプリやデスクトップ アプリケーションから CoreInputView.TryShowPrimaryView メソッドを実行することによりタッチ キーボードを表示することができます。 設定アプリの [デバイス] – [入力] にある [タブレット モードでなく、キーボードが接続されていない場合に、タッチ キーボードを表示する] をオンに設定する ハードウェア キーボードが接続されていない アプリケーションがフォアグラウンドにいる アプリケーションでには、以下のようなコードを実装します。 // 現在のビューに対する CoreInputView オブジェクトを取得しますCoreInputView view = CoreInputView.GetForCurrentView();// メソッドを実行しますbool bResult = view.TryShowPrimaryView(); しかしながら、Windows 10 version…


仮想化した TreeView コントロールが自動的にスクロールされる。

  こんにちは、Platform SDK (Windows SDK) サポートチームです。今回は、予期しないタイミングで TreeView コントロールが自動的に縦方向へスクロールされるという、WPF の問題についてご案内します。   現象   WPF アプリケーションにおいて、仮想化した TreeView コントロールにアイテムを追加していると、予期しないタイミングで TreeView コントロールに縦方向のスクロールが発生するケースがあります。このスクロールは自動的に発生してしまうため、TreeView コントロールのアイテム数が多い場合は、ユーザーがそれまで目視で確認していたアイテムを見失う可能性があります。 この問題は、WPF の仮想化した TreeView コントロールでのみ発生することが確認されています。   原因   TreeView コントロールにアイテムを追加すると、WPF 内部では、追加したアイテムの高さに応じてスクロールバーのサイズ・現在位置を計算し、それらを縦方向に変化させます。 しかしながら、スクロールバーのサイズ・現在位置を計算するための、WPF 内部のロジックには不具合があります。そのため、追加されたアイテムと追加する直前のスクロールバーのサイズ・現在位置によっては、正確な計算結果が得られず、予期しないタイミングで予期しない位置への縦方向のスクロールが発生する問題が起こります。   状況   マイクロソフトでは、この問題について調査しています。進展があり次第、本ブログを更新予定です。


WPF アプリケーション上で、F10 キーが押されたことを検出できない

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、WPF アプリケーション上で F10 のキーイベントを検出できない問題についてご案内します。 現象 Microsoft IME による日本語入力が ON の状態では、テキストを全選択してから F10 キーを押下しても、TextCompositionManager.PreviewTextInputStart イベント ハンドラーが呼び出されないケースがあります。 詳細 WPF アプリケーションにおいて、TextBox コントロールなどの日本語入力が可能なコントロールに UIElement.PreviewKeyDown イベント ハンドラーを追加すると、追加したイベント ハンドラー内で任意のキーが押されたタイミングをハンドリングすることが可能です。 ただし、Microsoft IME による日本語入力が ON の状態では、アプリケーションよりも Microsoft IME 側のキー検出が優先されます。 このため、押されたキーのシーケンスによっては、UIElement.PreviewKeyDown イベント ハンドラーが呼び出されないケースがあります。 例として、Microsoft IME による日本語入力が ON の状態で、テキストを全選択して F10 キーを押した場合は、UIElement.PreviewKeyDown イベント ハンドラーは呼び出されません。 なお、TextBox コントロールなどの日本語入力が可能なコントロールに TextCompositionManager.PreviewTextInputStart イベント ハンドラーを追加すると、日本語入力が開始されたタイミングをハンドリングすることが可能です。 この機能を利用すると、Microsoft IME による日本語入力が ON の状態であっても、TextCompositionManager.PreviewTextInputStart イベント…


Graphics.DrawLine メソッドで Panel コントロールに描画した直線が表示されません

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Graphics.DrawLine メソッドを使って Panel コントロールに描画した直線が表示されない、という現象についてご案内します。 現象 Windows フォーム アプリケーションにおいて、下記 1. ~ 4. のように、予め拡大または縮小した Panel コントロールに対して Graphics.DrawLine メソッドを使って直線を描画すると、描画した直線が想定通り表示されない現象が発生することがあります。 Windows フォーム アプリケーションの Form の上に、Panel コントロールを配置します。 Panel コントロールにおいて、Control.Paint イベントをハンドリングし、3. 以降の処理を行います。 Graphics.Transform プロパティを使って、Panel コントロールを任意のサイズに拡大または縮小します。 Graphics.DrawLine メソッドを使って、Panel コントロールに直線を描画します。 なお本現象は、Windows 10 April 2018 Update (バージョン 1803) で発生することが確認されています。 原因 本現象は、Windows 10 April 2018 Update の GDI+ レンダリング処理の影響で発生しています。 回避策…


Virtual Bytes が、Windows 10 April 2018 Update 適用前後で異なる

こんにちは、Platform SDK (Windows SDK) サポートチームです。Windows 10 April 2018 Update (1803) 適用後、 64 ビットプロセスの Virtual Bytes が以前の OS で返されていた値と比較して大きく異なるようになりました。今回はその件に関してご案内します。 現象 Virtual Bytes はプロセスが使用している仮想アドレス空間の現在のサイズを表していますが、2018 年 4 月 30 日に公開された Windows 10 April 2018 Update (1803) 適用後の環境において、64 ビットプロセスの  Virtual Bytes が大きく異なるようになりました。 原因 Windows 10 April 2018 Update (1803) 適用後の新しいメモリマネージャーにおいて、メタデータ用に予約される仮想メモリのサイズが変更されました。具体的には、64 ビットプロセスにおいて 4 GB 、 32 ビットプロセスにおいては 36 KB が予め確保されます。…


Windows 10 でトースト通知が表示されないことがある

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 においてトースト通知が表示されない現象についてご案内します。   現象 Windows 10 上で動作するアプリケーションから API 等を用いてトースト通知しても、稀に期待したタイミングで表示されない場合があります。   背景 Windows 8 以降、トースト通知と呼ばれる機能が提供されました。 OS やアプリケーションが発する通知を画面右端に表示し、ユーザーに通知やアクションを促すことができます。 Windows 10 では、トースト通知に関する仕様変更があり、バルーン通知をトースト通知に変換する機能が既定となっています。   原因 トースト通知が期待する表示にならない原因として、ユーザー プロファイルの破損が考えられます。 ユーザー プロファイルは、OS よってユーザー アカウントごとに作成される領域で、ユーザー アカウントに紐付けられたファイルやシステム設定を管理します。 たとえば、トースト通知等、Windows の機能やアプリケーションによっては、ユーザー プロファイル配下のファイルやレジストリで各種情報を管理している場合があります。 このため、何らかの理由によりユーザー プロファイル配下の各種情報の整合性に問題が生じた場合、当該機能が正常に機能しなくなります。 残念ながら、ユーザー プロファイル内に不整合が生じた原因をあとから調査することは困難です。   対処方法 ユーザー プロファイルの破損が原因で、トースト通知を表示できない現象が発生した場合、OS の設定やアプリケーション側の実装等で対処することはできません。 この問題が発生した場合には、以下の手順にて、新しいユーザー プロファイルを作成して復旧することをご検討ください。 1. 整合性に問題が生じているユーザー プロファイルを削除します。 現象が発生しているユーザー アカウント以外のアカウントで、再現端末へログオンします。 コントロール パネルの…


ICopyHook::CopyCallback ハンドラ関数へ通知される pszDestFile が空になる

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、ICopyHook::CopyCallback ハンドラ関数で確認されている不具合についてご案内します。 現象 Windows 10 version 1803 (RS4) において、フォルダーのコピー操作時に呼び出される ICopyHook::CopyCallback ハンドラー関数に対して、コピー先フォルダーを示す pszDestFile が正しく通知されず、常に空になります。 以前のバージョンの Windows では、pszDestFile にコピー先フォルダーの情報がセットされていました。 開発したアプリケーションにおいて、このハンドラーを使用してコピー先の監視を行っていたり、コピー先の場所によってフォルダーのコピーを抑止していた場合には、期待される結果が得られなくなります。 この現象は、コピー操作に限らず、移動操作の場合にも発生いたします。 原因 この現象は、Windows 10 version 1803 (RS4) におけるシェル コンポーネントの不具合によって発生します。 回避策 この問題の回避策はありません。 状況 この問題は次期バージョンの Windows 10 RS5 にて修正される予定です。進展があり次第、本ブログを更新予定です。 参考情報 ICopyHook::CopyCallback https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb776048.aspx Technorati Tags: SDK