「アプリケーションデスクトップツールバー」または略してappbarとして機能するアプリケーションがあります。これはWPFで実装されており、このガイドラインに従うことでAppbarの機能が追加されています:https://msdn.microsoft.com/en-us/library/windows/desktop/cc144177(v=vs.85).aspx。Windows 8.x/10で正しく動作しないAppBarアプリケーション(複数のアプリケーションバーではデスクトップの作業領域が縮小されません)
すべてがWindows 7で正常に動作しますが、Windows 8.1で(またはWindows 8.xの可能性が高い)次の処理が行われます。Windowsデスクトップの作業を
が- ディスプレイの側にドッキング最初のアプリケーションバーが正しく表示され、エリアがそれに応じて縮小されるので、Appbarはウィンドウと重複しません。
- ディスプレイの同じ側にドッキングされた2番目のアプレットが正しい位置に表示されますが、Windowsデスクトップの作業領域は縮小されません。したがって、2番目のAppbarは他のウィンドウと重複しています。
- ディスプレイの同じ側にドッキング第三のアプリケーションバーを用いて同様に作用する第1
- 前の3つの下/上に配置され得る第四の(およびそれ結局appbars)は、それほど効果的に消滅し始めるappbars
何ステップ2 codewiseで発生する(Windowsの8.1でデバッグ)これです:
SHAppBarMessage((int型)ABMsg.ABM_QUERYPOS、REF barData)を呼び出します。
は、新しいappbarの正しく調整された座標を返します。しかし、次に呼び出します
SHAppBarMessage((int)ABMsg.ABM_SETPOS、ref barData);
は「通過する」とは思われません。つまり、okが実行され、後でウィンドウが正しい位置(barDataで定義された位置)に設定されます。しかし、作業領域は縮小されていません。この関数呼び出しで私の理解が必要です。
ステップ4では、SHAppBarMessage((int)ABMsg.ABM_QUERYPOS、ref barData)が、すでに存在するappbarsと同じような不正な座標を返すようになります。その結果、appbarsは互いに重なり合うことになります。
同じ問題がWindows 10で発生しますが、より深刻な副作用があるようです。私のappbarアプリケーションは複数のappbarインスタンスで非常に迅速にクラッシュし、Windows OS全体を数分間停止させます。
私はかなり広範にウェブを検索しましたが、解決策は見つかりませんでした。しかし、この記事を見つけたのはhttps://github.com/PhilipRieck/WpfAppBar/issues/4で、私のアプリの症状はかなり似ています。
ご協力いただければ幸いです。私の推測では、これはWindows 8.x/10のSHAppBarMessage APIのバグです。しかし、それがそうであることが確認されるか、またはより良いことが確認されるまで、見た目は止まらないだろう。
こんにちは、この問題で運がいいですか?私も同じことに直面しています。 Win 7でうまく動作し、Win 10サーフェスマシンで問題が発生したWPF AppBarアプリケーションがあります。 –
これまでのところ、ダイスはありません。 – Jone