Fall Creators Update を適用後 DataGridView に文字を入力すると 2 文字入力される

  こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Fall Creators Update を適用すると Windows フォーム アプリケーションの DataGridView で文字が 2 文字表示される現象についてご案内します。   現象 Windows フォーム アプリケーションで DataGridView のセル自体が選択されている状態で日本語 (全角文字、カタカナ) を 1 文字入力すると、確定された状態で 2 文字が表示されます。 例)写真 1 の状態で「あ」と入力するため「A」キーを 1 回押下すると、写真 2 のように「ああ」と 2 文字が確定された状態で表示されます。 写真 1 写真 2   この現象は Fall Creators Update を適用した Windows 10 で発生を確認しており、以前のバージョンでは発生しません。 写真のようなVisual Studio で…


LTSC (Long-Term Servicing Channel) の判定方法

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Microsoft の新しいサービシング モデルである LTSC (Long-Term Servicing Channel) の Windows をプログラムから判定する方法をご案内します。   プログラムから判定する方法には二つあります。 一つは WMI の Win32_OperatingSystem クラスの OperatingSystemSKU プロパティを参照する方法で、もう一つは Win32 API の GetProductInfo() の第五引数に返される値を参照する方法です。 以下に、MSDN ライブラリのリファレンスから該当箇所を引用し、それぞれ URL をご紹介します。   ◆ Win32_OperatingSystem class https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa394239.aspx OperatingSystemSKU Data type: uint32 Access type: Read-only Qualifiers: MappingStrings (“WMI”) Stock Keeping Unit (SKU) number for the…


StorageFolder.GetFilesAsync() メソッドの結果が正しく返されない問題について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、StorageFolder.GetFilesAsync() メソッドに関して確認されている問題についてご案内します。 現象 「[マイ コンピューター] からドライブにアクセスできないようにする」のポリシーが有効になっているドライブ上のフォルダに対して StorageFolder.GetFilesAsync() メソッドを実行しても、ファイルの一覧が取得できません。 フォルダ内ににファイルが存在するにも関わらず、取得される結果は 0 件となってしまいます。 この現象は、StorageFolder.GetFilesAsync() メソッドに限らず、StorageFolder.GetFoldersAsync() メソッドや StorageFolder.GetItemsAsync() メソッドを実行した場合にも発生します。 これらのメソッドを呼び出した際に、インデックスを使用しないクエリが選択された場合に限り発生いたします。 インデックスが使用されないクエリは、以下のいずれかの条件を満たした場合に実行されます。 ・GetFoldersAsync() のように引数なしで呼び出した場合 ・引数として CommonFolderQuery.DefaultQuery を指定した場合 ・IndexerOption.DoNotUseIndexer のオプションを明示的に指定した場合 「[マイ コンピューター]からドライブにアクセスできないようにする」のポリシーは、グループポリシー エディタ内の以下のパスに存在します。 [ユーザーの構成] – [管理用テンプレート] – [Windows コンポーネント] – [エクスプローラー] 原因 この現象は、Windows ランタイム API の一部である StorageFolder クラスの不具合によって発生します。 回避策 有効な回避策はございません。 「[マイ コンピューター] からドライブにアクセスできないようにする」のポリシーの代わりに、「指定したドライブを [マイ コンピューター]…


Windows 8.1 上で動作する Windows ストアアプリに対して UI Automationが動作しない

  こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、ストアアプリに対して UI Automationが動作しない現象についてご案内します。   現象 UI Automation を利用することにより、他のアプリケーションを操作する、または、他のアプリケーションから情報を取得する等のアクセスを行うことが可能です。 ところが、Windows 8.1上で動作しているストアアプリに対して UI Automation によるアクセスを実行すると、正しく動作しない現象が確認されています。 例えば、HTML コンテンツを WebView で表示しているストアプリがあるとします。UI Automation からこの HTML コンテンツにアクセスすると、正しいプロパティ値が取得できない場合があります。ところが、同じ HTML コンテンツを Internet Explorer で表示している場合は、UI Automation からこの HTML コンテンツにアクセスして、正しいプロパティ値を取得することができます。 同様の現象は、お客様が作成されたアプリケーションだけでなく inspect.exe や acccheckui.exe といった弊社ツールでも確認されています。 UI Automation については下記Blog などをご参照ください。 UI Automation のススメ https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2011/05/26/ui-automation/ 原因 この現象は、Windows 8.1 の不具合により発生します。 なお、Windows 8…


Windows 10 で日本語 Microsoft IME を使用中に例外が発生することがある

  こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、日本語の Microsoft IMEの使用中に例外が発生する現象についてご案内します。   現象 Windows 10で日本語の Microsoft IME 使用していると、稀に Imetip.dll などの Microsoft IME 関連の DLL で例外が発生する現象が確認されています。 この現象は、文字の入力中だけでなく、テキストボックス間をキーボードの Tab キー操作で移動している場合にも発生することが確認されています。   原因 この現象は、日本語の Microsoft IME が内部で使用している COMインタフェースの情報に不整合が生じたことが原因で発生します。 不整合が生じるケースは稀であるため、現象の発生頻度は高くありませんが、アプリケーションの構成やユーザーの操作方法によっては発生しやすくなる可能性があります。   回避策 現在までに、以下の回避策が確認されています。 回避策 (1) 現象が発生する操作手順が明確な場合は、その手順を変更します。 旧操作 : コントロール間の移動を、キーボードの Tab キーで実施 ⇒ 現象発生 新操作 : コントロール間の移動を、マウス クリックで実施 ⇒ 回避できる可能性があります 回避策 (2)…


XpsDocument クラスの XPS ドキュメントをビットマップに描画すると、特定の文字が描画されない

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、プログラムから XPS ドキュメントをビットマップに描画した時に、XPS ドキュメント内の特定の文字が描画されない問題についてご案内します。   現象 プログラムから、XPS ドキュメントを XpsDocument クラスで開き、RenderTargetBitmap クラスでビットマップに描画すると、XPS ドキュメント内の特定の文字が描画されない問題が発生します。 この問題は、.NET Framework 4.0 ~ 4.7 をターゲットにビルドしたプログラムを、Windows 8.1 上で実行した場合に発生することが確認されています。 また、描画されない文字には以下の特徴があることが、現在までの調査で判明しています。 全角の記号 (例: 「) 類似のグリフが半角記号としても存在する (例: [) XPS ドキュメント内で、単独の Glyphs エレメントにより表現されている   以下は、この問題が発生する XPS ドキュメントの実装例と、そのビットマップ描画結果の例です。 XPS ドキュメントの実装例 <Glyphs RenderTransform=”x,x,x,x,x,x” Fill=”#000000″ UnicodeString=”「あいうえお」” OriginY=”0″ OriginX=”0″ FontRenderingEmSize=”1″ FontUri=”/Documents/1/Resources/Fonts/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.odttf”/> <Glyphs RenderTransform=”x,x,x,x,x,x” Fill=”#000000″ UnicodeString=”「” OriginY=”0″…


DataGridView で BindingNavigator から行を移動すると、System.Data.NoNullAllowedException が発生する

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、.NET Framework 4.0 ~ 4.7.1 で確認されている BindingNavigator の動作についてご案内します。   現象 DataGridView の一番下に表示される「行の追加オプション」行 (※ 図 1 の赤枠部分) を選択した状態で、BindingNavigator コントロールの [前に戻る] または [最初に移動] (※ 図 1 の黄枠部分) をクリックすると、System.Data.NoNullAllowedException 例外が発生します。 この例外は、プログラムが以下のいずれかの条件に該当している場合に発生することが判明しています。   条件 (1) DataGridView.AllowUserToAddRows プロパティを true に設定している 条件 (2) DataGridView にバインドされているデータの DataColumn.AllowDBNull プロパティを false に設定している 条件 (3) プログラムを .NET 4.0 ~ .NET…


タッチキーボードのキーボード モードについて

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 8 以降のタッチキーボード (Tabtip.exe) のキーボード モードについてご案内します。 タッチキーボードの右下に配置されているキーボードのマークのアイコン (下図 1 の赤丸部分) をクリックまたはタップすると、現在利用可能なキーボード モードを選択して変更することができます。 (以下図は Windows 10 Creators Update のタッチキーボードを例としています) (図 1)   標準のキーボード (図 1) の他にも、手描きパネル (図 4) やタブレット等のモバイル端末でも利用しやすいキーボード (図 2, 3) が用意されています。 ユーザーは用途に応じたキーボード モードを選択してタッチキーボードを利用することができます。 (図 2) (図 3) (図 4)   なお WPF アプリケーション (※注 1)、ストア アプリケーション (※注 2) および…


GdiplusStartup と GdiplusShutdown を繰り返すとメモリ リークする

こんにちは、Platform SDK (Windows SDK) サポートチームです。 アプリケーションからの GDI+ 利用方法によってメモリ リークする現象についてご案内します。   現象 アプリケーションから GDI+ を利用する前に GdiplusStartup 関数を、利用したあとに GdiplusShutdown 関数を実行しますが、この対をアプリケーション内で何度も実行すると少しづつメモリが解放されない状態で残ります。このメモリは、アプリケーション プロセスが終了するまで解放されません。 アプリケーションで画像を処理するときにのみ GDI+ を利用しているなど、常時使わずに一時的に利用する場合にこのような実装になることがあります。 実装例: void OnProcessing() { Gdiplus::GdiplusStartupInput gdiplusStartupInput = { 1, NULL, FALSE, FALSE }; ULONG_PTR gdiplusToken = NULL; Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); // GDI+ を利用したイメージ処理など // … Gdiplus::GdiplusShutdown(gdiplusToken); } メニュー操作などからこの関数を何度も実行していると、解放されないメモリが蓄積していきます。   原因 この現象は、GDI+ 内から間接的に利用している Text…


8 月の更新プログラム適用後、アプリケーションからの印刷が失敗する

こんにちは、Platform SDK (Windows SDK) サポートチームです。 8 月の更新プログラムを適用することによって発生する印刷時の現象についてご案内します。   現象 8 月の更新プログラムを適用すると、一部のプリンターに対するアプリケーションからの印刷が失敗する場合があります。 印刷内容やアプリケーション側の処理によっては印刷が失敗せず、正常に印刷できます。また、印刷が失敗する場合には、以下のような現象として表面化します。 紙面全体もしくは一部が白紙の状態で印刷される アプリケーションの印刷処理が終わらず、スプール ファイルのサイズが大きくなり続け、システムが不安定になる   状況 マイクロソフトでは、この現象について調査しています。 進展があり次第、本ブログを更新予定です。