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