ページ

2008年8月3日日曜日

SimpleCap (32) アプリケーションキャプチャ(3)

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

前回の補足から。"Application"メニューが選択された場合のメッセージフローは次のようになる。


"Application"が選択されると NSMenuの Delegate先である AppController の menuWillOpen: が呼出される。この中で LauncedApplications#updateApplicationMenu: を呼出し、メニューに表示するアプリケーション一覧を更新している。



アプリケーションが選択された場合のフローは次のようになる。


まず AppController#selectApplicationMenu: が呼ばれる。これはアプリケーション一覧を作成する時、NSMenuItemのターゲットに AppController、アクションに selectApplicationMenu: を設定している為。

続いて通常のキャプチャシーケンス(図の (2)(3))が流れる。

ApplicationHandler では後々選択されたアプリケーションの情報を使うので、selectApplicationMenu: の引数にこれを渡してやる。アプリケーション情報は NSWorkspaceで取得した情報とアイコン画像を元に作成したもの。

アプリケーション情報の例:

2008-07-03 23:37:21.691 SimpleCap[3572:10b] {
image = NSImage 0xc8084c0 Size={32, 32} Reps=(
NSIconRefBitmapImageRep 0xc808da0 Size={128, 128} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=32 Pixels=128x128 Alpha=YES Planar=NO Format=0,
NSIconRefBitmapImageRep 0xc808e00 Size={512, 512} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=32 Pixels=512x512 Alpha=YES Planar=NO Format=0,
NSIconRefBitmapImageRep 0xc808e40 Size={32, 32} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=32 Pixels=32x32 Alpha=YES Planar=NO Format=0,
NSIconRefBitmapImageRep 0xc808e80 Size={16, 16} ColorSpace=NSCalibratedRGBColorSpace BPS=8 BPP=32 Pixels=16x16 Alpha=YES Planar=NO Format=0
);
name = "\U30bf\U30fc\U30df\U30ca\U30eb";
pid = 2771;
}


- - - -
お膳立てはできた。次は実際のキャプチャ処理に入っていこう。