Outlookのメールアイコンが出てたらメッセージを表示したい Notifire(4)

Outlookのメールアイコンが出てたらメッセージを表示したい Notifire(4)

なんの話をしてたのか曖昧になって来たけど、次は、通知領域に表示されているアイコンの数を数えて見ることにします。
単純な割り算じゃない感じです。
わざと通知領域のアイコンの数を増やしてみて、ゼロ(あれば)から5個ぐらいまでの縦横サイズを取得してみます。
こんなんでました。

TTimerで1秒おきに通知領域のイメージをTImageに表示して、その時のTImage.Picture.Bitmapの縦横じゃなくて横縦サイズを4桁4桁につないでTListBoxに表示しています。
すごい行数にならないように、すでに追加されてるサイズ文字列だったらもう追加しないし、見やすいようにSorted:=Trueで並べ替えてます。

0個のとき 0,0
1個のとき 30,20 (30増えた。というかこれが基準かな?)
2個のとき 54,20 (24増えた)
3個のとき 78,20 (24増えた)
4個のとき 102,20 (24増えた)
5個のとき 126,20 (24増えた)

わかることは
通知対象がなくてもウィンドウが作られていること
縦幅は一定で20(クラシック表示限定かどうかは不明)
横幅は1個アイコンが増えたら24広がる
ということです。

正方形じゃないのが気味悪いけど、マージンが左右2ずつあると考えると話が合いそう。
一番左の早送りボタン風のボタンはイメージに含まれてないから、1個のときの30ってアイコン単位の左右2ずつの更に、ウィンドウ全体として左右3ずつのマージンがあるってことだろうか。

途中でWindos7風に変えてみたり戻したりしたらこうなりました。


右側の数字(ウィンドウの高さ)が20とか28とか36とか混ざってますが、横幅はスタイル(?)によらずアイコンの数だけで決まるようで、ちょっと気が楽になりました。

今はアイコンの数を目で数えてるだけでプログラムでは数えてませんが、計算方法は明らかです。
 アイコンの数=(ウィンドウの幅-全体の左右マージン6)÷アイコン幅24

また、取得したイメージを左に3(左側のマージン分)ずらしてから、24ピクセル分左から取っていけば、アイコン1個がマージン付きで取得できそうです。

バラしておけば、ひょっとしたらメールのアイコンがどんなものかを最初に教えておくことで、プリンタやWindowsUpdateのアイコンに邪魔されずに、メールが来たことを特定できそうだなぁと思うんですが、めんどくさそうな気もします。

ま、一歩ずつ。
関連記事
スポンサーサイト