Windows 10 でアイコン オーバーレイが正しく表示されない場合がある

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 において、アイコン オーバーレイ機能が正しく動作しない可能性があることについてご案内いたします。   現象  アイコン オーバーレイは、ファイルやフォルダーのアイコンに、小さいアイコンを組み合わせる機能です。 例えば、OneDrive では、アイコン オーバーレイによって、以下のように、フォルダーのアイコンにチェックマークを追加しています。 この動作は、アプリケーションがアイコン オーバーレイ ハンドラ―を登録することで実現されています。 通常、ファイルやフォルダーの変更が行われると、アイコン オーバーレイ ハンドラ―の IShellIconOverlayIdentifier::IsMemberOf メソッドが呼び出され、そのファイルの状態に合わせた、小さいアイコンを追加します。   しかし、Windows 10 のデスクトップ上に保存された Office 製品 (Word や Excel など) のファイルに関しては、ファイルが更新されても IShellIconOverlayIdentifier::IsMemberOf メソッドが呼び出されない現象が確認されています。 これにより、アイコン オーバーレイ ハンドラ―がファイルの更新を検知できず、小さいアイコンが追加されない状態になります。   なお、「デスクトップ以外の任意のフォルダーに保存された Office 製品のファイル」や「デスクトップ上に保存された Office 製品以外のファイルやフォルダー」については、同様の現象は発生しません。   状況  この現象については現在調査中です。 詳細について分かりしだい更新する予定です。   対処方法  アイコン オーバーレイが正しく表示されない場合は、以下のいずれかの方法で更新を行います。 デスクトップ上でマウスを右クリックし、「最新の情報に更新」メニューにより更新を行います。…


Windows 10 Creators Update において、DateTimePicker コントロールの表示や入力が正しく機能しない場合がある

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 10 Creators Update において、DateTimePicker コントロールで確認されている問題についてご案内します。   現象 Windows 10 Creators Update において、DateTimePicker コントロールの年月日の入力および表示が正しく機能しない現象が確認されています。 具体的には以下 (A)、(B)、(C) いずれかの条件で DateTimePicker コントロールを使用した際に発生する場合があります。 (A)Win32 の場合、date and time picker controls (B)MFC の場合、CDateTimeCtrl (C)Windows フォーム アプリケーションの場合、DateTimePicker   それぞれのクラスについては以下 MSDN ドキュメントをご参照ください。 About Date and Time Picker Controls < https://msdn.microsoft.com/en-us/library/windows/desktop/bb761726.aspx > CDateTimeCtrl < https://msdn.microsoft.com/ja-jp/library/57f46yyw.aspx > DateTimePicker < https://msdn.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.aspx…


AddPrinterConnection 関数と DeletePrinterConnection 関数の呼び出しにより、印刷スプーラサービスでメモリリークが発生する可能性がある

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 8 以降の OS において、印刷スプーラサービス (Spoolsv.exe) でメモリリークが発生する問題についてご案内いたします。   現象 アプリケーションから AddPrinterConnection 関数と DeletePrinterConnection 関数により、プリンターの接続・切断を行った場合、印刷スプーラサービス (Spoolsv.exe) でメモリが20KB、ハンドルが 1 つ増加する可能性があることが確認されています。 本現象は、AddPrinterConnection 関数と DeletePrinterConnection 関数を連続して呼び出すようなアプリケーションを実行した場合に発生します。 なお、AddPrinterConnection 関数と DeletePrinterConnection 関数の呼び出し間隔が数分間空いている場合には、メモリとハンドルの増加がみられない場合もあります。 例えば、ログオン時に AddPrinterConnection 関数を呼び出し、ログオフ時に DeletePrinterConnection 関数を呼び出すようなシナリオの場合、ログオフまでに充分な時間があれば問題は発生しません。   状況 この現象については現在調査中です。 詳細について分かりしだい更新する予定です。   対処方法 一般的なシナリオとして、本問題により、印刷スプーラサービスやシステムが動作できなくなるほどに、メモリが使用されることはありません。 しかし、メモリリークが顕著に見られる場合には、印刷スプーラサービス、または、システムを再起動していただく必要があります。


タッチ ディスプレイのケーブルを抜き差しすると、WPF アプリケーション上でタッチおよびスタイラス操作ができなくなる

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、タッチディスプレイを接続したコンピューターにおいて、タッチやスタイラスで WPF アプリケーションを操作する場合の問題についてご案内します。   現象 コンピューターに接続しているタッチ ディスプレイのケーブルを抜き差しすると、稀に WPF アプリケーション上でタッチおよびスタイラス操作ができなくなる問題が確認されています。 この問題が発生すると、WPF アプリケーションを再起動するまで、WPF アプリケーション上のタッチおよびスタイラス操作が行えなくなります。   詳細 コンピューターに接続しているタッチ ディスプレイのケーブルを抜き差しすると、Windows はデバイスの抜去、接続状態を検出し、全てのトップレベル ウィンドウに対して、新しいデバイスとしてタッチ ディスプレイが有効になったことを通知します。 この通知を受け取った WPF アプリケーションは、アプリケーションで管理・制御しているタッチおよびスタイラス用の内部情報を初期化して、新しいデバイス上でのタッチおよびスタイラス操作に備えます。 ところが、Windows ならびに .Net Framework (WPF) の内部処理において、タッチおよびスタイラス関連の処理が、適切に制御されないという問題がありました。 こうした問題により、新しいデバイスとしてタッチ ディスプレイが接続されたにも関わらず、WPF アプリケーションでは既存の内部情報を適切に初期化することができず、ユーザーがタッチおよびスタイラス操作を行っても、WPF アプリケーションがそれを検出できないという問題が発生します。   原因 本現象は、以下のバージョンの .NET Framework (WPF) および Windows の問題です。 弊社製品の問題によりご不便をおかけしますことを、深くお詫びいたします。 Windows 7 SP1 Windows 8 Windows 8.1 Windows…


.NET Framework のアプリケーションが参照するプロキシ設定を構成する方法

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、HttpWebRequest クラスや WebClient クラスを利用しているアプリケーションで HTTP 通信に失敗する場合のトラブルシュートとして、.NET Framework のアプリケーションが参照するプロキシ設定を構成する方法をご案内します。   .NET Framework のアプリケーションから、HTTP 通信を行うために HttpWebRequest クラスや WebClient クラスを利用するかと思いますが、これらのクラスは既定では Internet Explorer のプロキシ設定を参照しています。 このため、HttpWebRequest クラスや WebClient クラスを利用しているアプリケーションで HTTP 通信に失敗する場合は、Internet Explorer のプロキシ設定もチェックしてみてください。   例えば、HTTP の通信先アドレスを Internet Explorer のアドレスバーに入力してもアクセスに失敗する場合は、Internet Explorer のプロキシ設定が誤っている可能性があります。 また、アプリケーション実行環境のプロキシサーバー側の構成によっては、ローカルネットワーク内のホストへの接続を拒否する設定となっている場合があります。 このような環境では、プロキシサーバーを経由せずに直接通信を行わせるために、Internet Explorer の設定で [ローカル アドレスにはプロキシサーバーを使用しない] をオンにする必要があります。   また、Internet Explorer の設定に依存せず、HttpWebRequest クラスや WebClient クラスが使用するプロキシ設定を直接指定したい場合は、以下の方法をご参照ください。…


独自デスクトップ上で、タッチキーボードを表示することができません

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 8.1 のタッチキーボード (Tabtip.exe) で確認されている現象についてご案内します。   現象 独自デスクトップ上でタッチキーボードを表示しようとすると、タッチキーボードが既定のデスクトップ (Default デスクトップ) 上で表示される現象が確認されています。   詳細 プログラムから Win32 API の CreateDesktop() を呼び出すと、独自のデスクトップを新しく作成することができます。 この独自デスクトップ上でも、ユーザーは Default デスクトップと同じように、マウスやキーボード、タッチ操作を行うことが可能です。 ところが、Windows 8.1 において独自デスクトップ上でタッチキーボードを表示しようとすると、(独自デスクトップではなく) Default デスクトップ上にタッチキーボードが表示される現象が発生します。 このため、独自デスクトップ上で操作中のユーザーは、タッチキーボードを利用することができません。   原因 マイクロソフトでは、この問題について現在調査中です。 詳細については、わかりしだいこの資料に掲載する予定です。   回避策 独自デスクトップ上では、タッチキーボードの代わりに、スクリーンキーボード (Osk.exe) のご利用をご検討ください。 なお、ShellExecute() を呼び出すと、プログラムから現在のデスクトップ上にスクリーンキーボードを表示することが可能です。 このようなプログラムを独自デスクトップ上で実行することで、プログラムを経由してスクリーンキーボードを独自デスクトップ上に表示させることができます。


Windows 8 以降のタッチキーボードの表示動作について

こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、Windows 8 以降のタッチキーボードの表示動作についてご案内します。 Windows 8 以降の OS では、タッチ キーボードの表示に関する動作が変更されています。   Windows 7: テキスト ボックスにフォーカスを移動すると、自動的に Tablet PC 入力パネルが表示される Windows 8 以降: デスクトップ アプリケーションの場合、テキスト ボックスにフォーカスを移動するだけではなく、明示的にタスク バーにあるタッチ キーボードのアイコンをタッチ、もしくはスタイラスでクリックすると、タッチ キーボードが表示される これにより、アプリケーションによっては自動的にタッチ キーボードや手書きパネルが表示されない事象が発生することを確認しています。   対処策としては、アプリケーションにてサポートされた方法はなく、手動でタスクバーのタッチキーボードアイコンをクリックし、タッチキーボードや手書きパネルを表示して利用する必要があります。当該アイコンは、デスクトップ上のタスクバーを右クリックし、[タッチ キーボード ボタンを表示] のチェックをオン (画面1) にすることで、アイコン (画面2) が表示されるようになります。こちらからユーザー操作を促すようにしてください。 画面 1 画面 2 なお Windows 10 Anniversary Update (1607) で “タブレットモードでなく、キーボードが接続されていないときに、手書きパネルを表示する” 設定が追加されましたのでシナリオに応じて適宜ご利用ください。当該設定は、[設定]…


MeasureCharacterRanges により文字列の末尾のスペース文字の情報が取得できない場合がある

 こんにちは、Platform SDK (Windows SDK) サポートチームです。 今回は、System.Drawing.Graphics.MeasureCharacterRanges メソッドにより、文字の描画位置を取得する場合に、正しい値が取得できない問題についてご案内します。 現象 Graphics.MeasureCharacterRanges メソッドにより、「末尾のスペース文字」の位置とサイズを計算した場合、値が 0 になる可能性が確認されています。 以下は MeasureCharacterRanges メソッドの使用例です。 private void Form1_Paint(object sender, PaintEventArgs e) { // 計算対象の文字列を定義します string measureString = “AAAAAAAAAA “; // CharacterRange 構造体を定義して、計算対象の文字を設定します CharacterRange[] characterRanges = new CharacterRange[measureString.Length]; for (int i = 0; i < measureString.Length; i++) { characterRanges[i] = new CharacterRange(i, 1); } // パラメータを定義します…


CDS_RESET フラグと CDS_RESET_EX フラグについて

こんにちは、Platform SDK (Windows SDK) サポートチームです。 Windows Vista および Windows Server 2008 から提供されている CDS_RESET_EX フラグについてご紹介します。   概要 Windows Vista および Windows Server 2008 から、ChangeDisplaySettingsEx 関数の第四引数 DWORD dwflags に指定可能なフラグ値として、CDS_RESET_EX (0x20000000) が Windows SDK 同梱のヘッダーファイルに追加されています。   詳細 ChangeDisplaySettingsEx 関数の第四引数に指定可能なフラグ値の一つに、CDS_RESET (0x40000000) があります。 この CDS_RESET は、要求された設定が現在の設定と同じであっても、ディスプレイ デバイスの設定を変更する (リセットする) ためのフラグです。 ところが Windows Vista および Windows Server 2008 には、要求された設定が現在の設定と同じである場合は CDS_RESET を指定してもリセット処理が有効にならない問題がありました。 この問題は、Windows…


Windows 10 Anniversary Update の 日本語版 Microsoft IME 使用時に、不明なスレッドが生成される

こんにちは、Platform SDK (Windows SDK) サポートチームです。 Windows 10 Anniversary Update (バージョン 1607) の日本語版 Microsoft IME で確認されている問題についてご案内します。   現象 Windows 10 Anniversary Update の 日本語版 Microsoft IME 使用時に、Desktop アプリケーションのプロセス内に、不明なスレッドが生成される問題が確認されています。   詳細 TextBox 等の文字入力が可能なコントロールを使用している Desktop アプリケーションにおいて、Windows 10 Anniversary Update の日本語版 Microsoft IME を使用していると、プロセス内に不明なスレッドが生成される現象が発生します。 不明なスレッドは、文字入力が可能なコントロールが生成される際に、それらのコントロールと同じ数だけ生成されます。 また、文字入力が可能なコントロールが破棄されても、これらの不明なスレッドは終了せず、プロセスが終了するまで存在し続けます。 このため、長時間 Desktop アプリケーションを実行していると、増加したスレッドによってプロセス内のメモリ消費量が上昇し、メモリ不足でプロセスが強制終了する等の予期しない問題が発生することがあります。 なお、本現象はバージョン 1511 までの Windows 10 では、日本語版 Microsoft IME を使用している場合でも発生しません。 また、Windows…