ページ

2008年6月19日木曜日

メニューのキャプチャ(その12)Dockのメニュー

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

griffin-stewie さんより、Dockのメニューがあるとの指摘を受けた。早速 WindowListを調査してみる。

WindowListのタイマーを仕掛けてDockのメニューを開いておく。


出た。layer=101で普通のメニューであることがわかる。特徴としては Owner nameが"Dock"になっていること。



前回のサンプルでキャプチャしてみる。案の定、メニューバーが入っている。



処理としてはコンテキストメニューと同じなので、OwnerName=="Dock"を利用してフラグを立てた後、処理を合流させてやる。
AppController.m

 // (2) search normal menus
for (i=0; i < CFArrayGetCount(window_list); i++) {
   :
NSString *owner_name = (NSString*)CFDictionaryGetValue(window, kCGWindowOwnerName);
if ([owner_name isEqualToString:@"Dock"]) {
is_dockmenu = YES;
}
   :
// (3) calcurate rect
if (is_contextmenu || is_dockmenu) {
rect_all = CGRectNull;
   :



さて再チャレンジしてみよう。

できた。


ソース:MenuCapture-08.zip

- - - -
今度こそメニューが制覇できただろうか。