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.再びアプリの入力エリアをタッチしても、タッチキーボードが起動してきません。 回避策 一度デスクトップをタッチした後に再度アプリの入力エリアをタッチすることで、タッチキーボードが起動します。 状況 マイクロソフトではこの現象を調査中です。 進展があり次第、本ブログを更新予定です。


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+ レンダリング処理の影響で発生しています。 回避策…


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

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


Windows 10 version 1803 (April 2018 Update) で、日本語版 Microsoft IME を無効化すると、タッチ キーボードが起動しない

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 version 1803 (April 2018 Update) において日本語版 Microsoft IME を無効化した場合、タッチ キーボード (Tabtip.exe) が起動しない現象についてご案内します。 現象 IME のコンテキスト (HIMC 値) の状態には、ON/OFF/Disable の三つの状態があります。 ON : 日本語入力が可能なコンテキスト OFF : 日本語入力が不可能なコンテキスト (英数のみ入力可能なコンテキスト) Disable : IME を介した日本語、英数いずれの入力も不可能なコンテキスト (直接入力は可) これまでの Windows 10 では、TextBox 等の編集可能なコントロールをタッチした場合、IME のコンテキストが上記三つの状態のいずれであっても、タッチ キーボードが起動しました。 しかしながら、Windows 10 version 1803 (April 2018 Update) では、編集可能なコントロールの IME のコンテキストが「Disable」の状態だった場合は、タッチ…


Microsoft Print to PDF 選択時の CPrintDialog::OnInitDialog() 動作について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、通常使うプリンターに Microsoft Print to PDF が選択されている場合の CPrintDialog 動作についてご案内します。   現象 MFC の CPringDialog クラスは、Windows のコモン ダイアログ ボックスである [印刷] ダイアログで提供されるサービスをカプセル化したクラスです。 このため、CPringDialog 派生クラス内で CPringDialog::OnInitDialog() をオーバーライドすると、アプリケーション独自に [印刷] ダイアログの外観をカスタマイズする等が可能です。 ところが、以下の条件に該当する場合は、CPringDialog 派生クラス内で CPrintDialog::OnInitDialog() が呼び出されません。 (同様に、CPrintDialog 派生クラス内で WindowProc() をオーバーライドしても、WM_INITDIALOG メッセージが受信されません) Windows 10 上でプログラムを実行している プログラムを 64-bit でビルドしている 通常使うプリンターに Microsoft Print to PDF が選択されている   原因 前述した三つの条件に該当していない場合は、CPrintDialog クラス内部では…


NotifyIcon.ShowBalloonTip メソッドで表示されるバルーン表示の問題について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は Windows 10 Creators Update 以降の NotifyIcon.ShowBalloonTip メソッドで表示されるバルーン表示の不具合についてご案内します。   現象 NotifyIcon クラスの ShowBalloonTip メソッドを実行すると、以下のようなバルーンが表示されます。 バルーン内に表示されている内容は以下となります。 1行目に表示される “タイトル” の文字は、NotifyIcon クラスの BalloonTipTitle プロパティの値です。 2行目に表示される “ここに通知メッセージが表示されます” の文字は、NotifyIcon クラスの BalloonTipText プロパティの値です。 3 行目に表示される “WindowsFormsApp1” の文字は、AssemblyTitle 属性、C# でプロジェクトを作成している場合は AssemblyInfo.cs の AssemblyTitle に記述した値です。 この AssemblyTitle 名の部分が、サインアウトや再起動をきっかけに以下のような Microsoft.Explorer.Notification.{GUID} の表示になってしまうことがあります。 再現頻度、再現手順に明確な規則性は確認できていませんが、この現象に至った場合は GUID の表示が出続けます。   原因 この現象は、Windows 10 の不具合により発生します。 Windows 10…


Windows 10 Fall Creators Update での Credential Provider に対する影響について

こんにちは、Windows SDK サポートチームです。 今回、Windows 10 Fall Creators Update の OS の仕様変更により、Credential Provider に影響が出ることがあります。その解説を以下に記載しましたので、ご確認ください。 Windows 10 Fall Creators Update では、Winlogon Automatic Restart Sign-On (ARSO) の機能がよりよいパワーサイクルを提供する機能拡張が行われました。本処理では、シャットダウン / リブート後のユーザーがログインされた後のアップデート処理を自動的に実施するために、ARSO の機能により、自動ログイン –> ロック を行います。 Winlogon Automatic Restart Sign-On (ARSO) https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/winlogon-automatic-restart-sign-on–arso- この動作により、Credential Provider の ICredentialProvider::SetUsageScenario にて、上記の自動ログインが捕捉されなくなります。その結果、ロック解除時に Credential Provider へ処理がわたりますため、初回の呼び出しであっても、ロックステータスとなります。   回避策 以下のポリシーまたは、レジストリをセットいただきますと、ARSO を無効化することが可能です。 初回のログオン時を捕捉し、処理を行われている Credential Provider を開発いただいている場合、以下の回避策の利用をご検討ください。 Policy Registry Location:…


Windows 10 Creators Update 以降の OS で日本語 Microsoft IME を使用中にメモリ アクセス違反が発生することがある

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、日本語の Microsoft IME 使用中にメモリ アクセス違反が発生する現象についてご案内します。   現象 Windows 10 Creators Update 以降で、日本語 Microsoft IME を使用中に、大量のキー入力を高速で行うと、メモリ アクセス違反が発生することがあります。   詳細 テキスト ボックス等の入力可能なコントロールで WM_IME_COMPOSITION メッセージを処理すると、コントロール上で入力された変換文字列を操作することが可能です。 例えば、テキスト ボックスで WM_IME_COMPOSITION メッセージを受信した際に、引数に NI_COMPOSITIONSTR および CPS_COMPLETE を指定して ImmNotifyIME() を呼び出すプログラムを作成すると、ユーザーによって入力された変換文字列を即座に確定させることができます。 ひらがなのみ、カタカナのみを入力として受け付けたいテキスト ボックス等がある場合は、このようなプログラムを作成することによって、ユーザーの入力支援を行うことができます。 ところが、このような処理を行うプログラムを Windows 10 Creators Update 以降で実行して、大量のキー入力を連続して高速で行った (同じキーを押し続ける等) 場合に、メモリ アクセス違反が発生してプログラムが強制終了することがあります。   原因 Microsoft IME 側の予測変換処理とアプリケーション側の変換処理が並行して高速で実行されたために、文字変換処理に必要な内部データに不整合が生じた結果、メモリ アクセス違反が発生していました。  …