プラットフォーム
クライアント – Windows 8
サーバー – Windows Server 2012
説明
Windows ストア アプリのユーザー エクスペリエンスは、一度に 1 つのアプリに重点を置き、Windows UI によって提供されるマルチタスク、アプリの切り替え、通知を使用します。 Windows ストア アプリは、画面の空き領域を埋めるようにサイズが設定され、最も一般的なビューは全画面表示になります。 そのため、システム上の別のアプリが起動されると、新しいアプリがデスクトップ アプリと共にデスクトップ ウィンドウで開くとは想定できなくなりました。 これは、新しい Windows UI エクスペリエンスに参加することを選択した Windows ストア アプリとブラウザーに常に当てはまります。 デスクトップ上で別のデスクトップ アプリケーションを起動した場合や、アプリケーションがスナップされた状態にある場合など、他のアプリを同時に表示し続ける場合があります。
症状
デスクトップ アプリでファイルまたはプロトコルで ShellExecute API を使用するなど、一般的なアプリのアクティブ化手法を使用すると、Windows はその登録に関連付けられているアプリを起動します。これは、Windows ストア アプリやユーザーの既定の Web ブラウザーである可能性があります (既定の Web ブラウザーでは、デスクトップまたは新しい Windows UI に参加することを選択できます)。 Windows ストア アプリは全画面表示を使用して起動され、デスクトップと起動元のデスクトップ アプリは非表示になります。
注意
Windows 8では、インターネット エクスプローラー 10 はユーザーの既定のブラウザーとして構成されますが、ユーザーは別のブラウザーをインストールして既定として設定することもできます (Windows 7 からの変更はありません)。 インターネット エクスプローラー 10 では、デスクトップ アプリケーションからリンクを開くと、インターネット エクスプローラーがデスクトップで開きます。 ただし、この設定はユーザーが変更して、インターネット エクスプローラーが Windows ストア アプリとして開くようにすることができます。 ブラウザー ベンダーは、同様の "コンテキスト起動" エクスペリエンスを採用することが推奨されています。ただし、開発者は、すべてのブラウザーが同様に動作するわけではないという事実を計画する必要があります。
対応策
開発者がこの動作を軽減するためにアプリに対して行うことができる変更はありませんが、エンド ユーザーがユーザーに伝える必要がある操作があります。 拡張 ShellExecuteEx() API によって収集された情報を使用して、コンテキストに応じて適切なダイアログを設定することを検討してください。 そのダイアログで、起動するアプリと、そのアプリが Windows ストア アプリかデスクトップ アプリかをユーザーに示します。 CLSID を使用して、Windows ストア アプリとデスクトップ アプリを区別できます。 ユーザー オプション:
- ワイドスクリーン モニターを使用しているユーザーは、Windows ストア アプリを画面の端にスナップしてデスクトップを公開し、Windows ストア アプリとデスクトップ アプリの両方を同時に表示できます。
- インターネット エクスプローラーがユーザーの既定のブラウザーとして構成されている場合、ユーザーはコントロール パネルの [インターネット オプション] を変更して動作を変更できます。 [プログラム] タブでは、インターネット エクスプローラーがリンクを処理する方法を変更できます。 他のブラウザーでも同様の設定が提供される場合があります。