トップ回答者
タスクバーの位置

質問
回答
-
お手軽かつ確実ではない方法としては、以下のプロパティを比較することができます。
- Screen.PrimaryScreen.Bounds
- Screen.PrimaryScreen.WorkingArea
単純に、
var ps = Screen.PrimaryScreen; if (ps.Bounds.Width = ps.WorkingArea.Width) { // 画面の幅と、作業領域の幅が同じであれば、 // タスクバーは上か下にあるだろう if (ps.WorkingArea.Top == 0) { // 画面の一番上が作業領域なら、 // タスクバーは下にあるだろう } else { // 画面の一番上が作業領域ではないなら、 // タスクバーは上にあるだろう } } else { // 画面の幅と、作業領域の幅が異なるならば // タスクバーは左か右にあるだろう if (ps.WorkingArea.Left == 0) { // 画面の一番左が作業領域なら、 // タスクバーは右にあるだろう } else { // 画面の一番左が作業領域ではないなら、 // タスクバーは左にあるだろう } }
確実ではない理由として、
- Windowsでは複数のアプリケーションバーを作成できるため、それに対応していない。(2本以上のAppBarがあると誤認識する)
- Windowsではマルチモニタをサポートしているため、1番モニタにタスクバーがあるとは限らない。(特定のモニタにしか存在しなかったり、複数モニタに貫通している場合がある)
といったところがあります。確実な方法が必要であれば、AppBar に関する API を P/Invoke で呼び出すことになるかと思います。
- 回答としてマーク 村尾DOS 2012年12月20日 4:27
すべての返信
-
お手軽かつ確実ではない方法としては、以下のプロパティを比較することができます。
- Screen.PrimaryScreen.Bounds
- Screen.PrimaryScreen.WorkingArea
単純に、
var ps = Screen.PrimaryScreen; if (ps.Bounds.Width = ps.WorkingArea.Width) { // 画面の幅と、作業領域の幅が同じであれば、 // タスクバーは上か下にあるだろう if (ps.WorkingArea.Top == 0) { // 画面の一番上が作業領域なら、 // タスクバーは下にあるだろう } else { // 画面の一番上が作業領域ではないなら、 // タスクバーは上にあるだろう } } else { // 画面の幅と、作業領域の幅が異なるならば // タスクバーは左か右にあるだろう if (ps.WorkingArea.Left == 0) { // 画面の一番左が作業領域なら、 // タスクバーは右にあるだろう } else { // 画面の一番左が作業領域ではないなら、 // タスクバーは左にあるだろう } }
確実ではない理由として、
- Windowsでは複数のアプリケーションバーを作成できるため、それに対応していない。(2本以上のAppBarがあると誤認識する)
- Windowsではマルチモニタをサポートしているため、1番モニタにタスクバーがあるとは限らない。(特定のモニタにしか存在しなかったり、複数モニタに貫通している場合がある)
といったところがあります。確実な方法が必要であれば、AppBar に関する API を P/Invoke で呼び出すことになるかと思います。
- 回答としてマーク 村尾DOS 2012年12月20日 4:27