2017-12-01 49 views
0

Windowsのタスクバーには、「通知領域」または「システムトレイ」と呼ばれる領域があり、バックグラウンドで実行したり、システム通知を表示したりするアプリケーションには小さなアイコンが表示されます。タスクバーが画面の下部または上部にある場合は、この領域が右側に表示されます。タスクバー "通知領域"の監視、位置、および方向のWin32 APIはありますか?

マルチモニタの設定では、タスクバーがすべてのモニタに表示されるように設定されていても、この「通知領域」はタスクバーの1つにのみ表示されます。タスクバーを好みの表示にドラッグすると、通知領域が表示される画面を制御できます。

私の質問は:タスクバー「通知領域」の画面、場所、および方向性を見つけるために任意の簡単なAPIは

ありますか?

この例では、searches for the Shell_TrayWnd window handleが見つかりました。その位置で数式を試して、どの向きのものであるか(つまり、タスクバーが表示されている画面のどのエッジ)を調べます。

ただし、これはWindowsタスクバーの現在のUI設計に依存するため、非常に脆弱です。

Windows 10では、スヌーズ通知フライアウトを含む新しいcommon toast notification systemが導入されました。ただし、システム通知フライアウトを開閉するボタンを含め、通知領域を別のモニタに移動した場合でも、flyout itself is still displayed on the "primary monitor"

上記のことは、Microsoft独自の通知が通知領域に従わない場合と同様に、実際に行う方法がない可能性があることを示しています。しかし、Microsoft documentation of the notification areaは、トーストが近くに表示されるはずの非常に賢明な考えを示唆しています....私は彼らがマルチモニターの場合について考えなかったと思います。

microsoft toast location guideline

+0

私が完全にはわからない、主画面上のトースト通知を常に表示するというMicrosoftの決定/実装/バグは、あなたが望むことをすることができないという兆候です。 1つは、トーストの実装がWindowsランタイム/ユニバーサルWindowsプラットフォームの一部であり、サンドボックス環境で動作し、Windows API全体にアクセスできないことです。それは何らかの理由で意識的な決定かもしれません。またはバグ。あなたの直近の問題を解決するのに役立つものは何もありませんが、結局のところ致命的な終わりではないかもしれないことを強調するコメントだけです。 – IInspectable

答えて

-1

あなたはトレイアイコンのアクションへの応答として、いくつかのウィンドウを表示したい場合は、対応するトレイのメッセージは、カーソルがWPARAMとして座標が含まれますので、手動でトレイの場所を検索する必要はありません。キーボードでイベントが生成された場合でも、メッセージにはアイコンの左上隅の座標が含まれます。 NOTIFYICONDATA structure documentation

関連する問題